CN101488143A - 一种新型的web应用和本地应用的交互模式 - Google Patents
一种新型的web应用和本地应用的交互模式 Download PDFInfo
- Publication number
- CN101488143A CN101488143A CNA2008103001068A CN200810300106A CN101488143A CN 101488143 A CN101488143 A CN 101488143A CN A2008103001068 A CNA2008103001068 A CN A2008103001068A CN 200810300106 A CN200810300106 A CN 200810300106A CN 101488143 A CN101488143 A CN 101488143A
- Authority
- CN
- China
- Prior art keywords
- web
- local
- application
- special order
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种新型的web应用和本地应用的交互模式。该新型模式突破了传统的web应用在浏览器中运行时通过脚本(script)直接调用安装在本地计算装置上的ActiveX控件或Java Applet的模式,采用了本地应用根据web应用的需求来驱动web应用在web浏览器中的HTML文档对象模型(DOM)的方式来实现web应用和本地应用的交互,从而突破了传统模式所带来的局限。
Description
(一)技术领域
本发明涉及计算机应用程序和web技术,尤其涉及一种新型的web应用和本地应用的交互模式。
(二)技术背景
web应用是指那些用户界面驻留在web浏览器中的任何应用程序。典型的web应用包括网上银行,GoogleAppsForYourDomain,MicrosoftOfficeLive,webmail,在线日志,等等。
在很多情况下,web应用需要使用本地计算装置的资源,比如,使用本地用户的数字证书和私钥。然而由于众所周知的安全原因,web应用直接使用本地计算装置资源的权限受到了严格的限制,换句话说,web应用不能随意的使用本地计算装置的资源。要让web应用使用本地计算装置的资源,通常的方法是在本地计算装置中安装ActiveX控件或Java Applet,并修改本地计算装置的设置(比如,注册ActiveX控件,修改Java环境中的CLASSPATH,等),然后在web应用的脚本(script)中调用其提供的功能。
问题在于这种方法需要在本地计算装置中安装软件和修改设置,然而这对很多用户来说不是一件容易的事;更重要的是,在很多情况下用户根本不能在其使用的计算装置上安装软件,或修改设置(比如,在图书馆里的公众计算机)。
本地应用和web应用的不同之处在于,前者是直接在本地计算装置上运行,而后者是在web浏览器环境中运行。比如,安装在本地PC上的“笔记本”应用就是一个直接在本地计算装置上运行的本地应用。正是因为本地应用是直接在本地计算装置上运行,本地应用在本地计算装置上比web应用享有更高的权限,可以访问更多的本地资源(比如,本地计算装置的文件系统,数字证书和私钥,等)。
另外,本地应用可以设计成既不需要直接安装在本地计算装置上,也不需要修改本地计算装置的设置就可以在本地计算装置上运行,因此可以拷贝到移动存储内(比如U盘),用户可以随身携带,在任何能使用该移动存储的计算装置上运行该本地应用。
可是如何在既不使用ActiveX控件或Java Applet也不对本地计算装置的设置做修改的前提下,实现web应用和本地应用的交互,使web应用能通过本地应用来获取本地计算装置的资源和服务(统称为本地服务)?
本专利为这些问题提供了解决方案。
(三)发明内容
本发明的目的在于,提供一种新型的web应用和本地应用之间交互的模式。该新型模式突破了传统的web应用在浏览器中运行时通过脚本直接调用安装在本地计算装置上的ActiveX控件或Java Applet的模式,采用了本地应用根据web应用的需求来驱动web应用在web浏览器中的HTML文档对象模型(DOM)的方式来实现web应用和本地应用的交互,从而突破了传统模式所带来的局限。
本发明提供了一种实现web应用和本地应用交互的方法,所述方法包括:(1)提供一个web应用;(2)提供一个能运行web浏览器的本地计算装置,比如PC,智能电话,其中所述web浏览器为所述web应用提供了一个运行环境,也为用户提供了一个和所述web应用交互的用户界面;(3)根据所述web应用的需求设计与其交互的协议,其中所述协议定义了如何与所述web应用交互以及所述web应用需要得到的本地服务,比如,得到用户的数字签名,访问本地计算装置的文件系统;(4)提供一个本地应用,其中所述本地应用是根据所述协议的要求开发出来,能够和所述web应用交互,并提供所述web应用需要得到的本地服务;(5)将所述web应用加载于所述web浏览器上运行,所述web浏览器为所述web应用建立起DOM;(6)在所述本地计算装置上运行所述本地应用,运行的方法和运行其它本地应用是一样的;(7)所述本地应用采用业界已知的方法连接到所述web浏览器上,以访问所述web应用在所述web浏览器中的DOM;(8)最后所述本地应用按照所述协议的规定,通过访问所述web应用在所述web浏览器中的DOM的方式,完成与所述web应用的交互并为其提供本地服务;
其中,所述的本地服务包括由本地计算装置通过其硬件和软件提供的服务,也包括可连接到本地计算装置的硬件及其上的软件提供的服务;另外所述的本地服务可以包括加密,解密和数字签名。
在本发明的一个实施中,设计与web应用交互的协议包括:设计特别指令的内容和格式。所述特别指令的内容由所述web应用的需求而定,包括:如何与所述web应用交互,以及所述web应用需要得到的本地服务。特别指令的格式可以是多种多样的,需要事先在所述交互协议中明确归定。
所述特别指令的内容可以直接存放在所述本地应用中,在连接到所述web浏览器后,所述本地应用执行所述特别指令的内容来完成与所述web应用的交互,具体的方法包括完成以下一项或多项:
(一)对所述web应用的DOM进行加工,加工的方法包括在所述web应用的DOM中完成下面的一项或多项:(1)添加新的HTML元素,(2)删除HTML元素,(3)修改HTML元素的属性,(4)触发HTML元素的事件,以及(5)修改HTML元素的事件处理函数,使其指向所述本地应用中定义的处理函数,以使所述本地应用能追踪和处理在所述web应用中发生的事件;
(二)追踪和处理所述web应用的DOM中的事件,具体方法是当所述协议中规定的需要追踪和处理的事件发生时所述本地应用根据所述特别指令的内容修改所述web应用的DOM;也即当所述特别指令中规定的需要追踪和处理的事件发生时,在所述本地应用中定义的处理函数被调用,所述处理函数根据所述特别指令的内容对所述web应用的DOM进行加工,为所述web应用提供服务。
所述特别指令也可以存放在所述web应用中,在连接到所述web应用后,所述本地应用首先从所述web应用中取出所述特别指令,然后根据上面所述的方法执行所得到的特别指令。这一种方法的好处是本地应用可以设计的更加通用,能为多个web应用提供本地服务。
将特别指令存放在web应用中的方法之一是:在交互协议中定义识别号,并根据所述识别号将特别指令存入所述web应用中;所述本地应用在连接到所述web应用后根据所述识别号从所述web应用中取出所述特别指令。
一种将特别指令存放在web?应用中的具体方法包括:(1)在所述web应用中指定用于存放特别指令的HTML元素,必要时可以在web应用中添加新的HTML元素;(2)将交互协议中定义的识别号分配给所述指定的HTML元素,分配的方法可以是将所述识别号存入所述HTML元素的id属性中;(3)在所述指定HTML元素的属性中指定用于存放特别指令的属性;(4)将所述特别指令存入所述HTML元素的用于存放特别指令的属性中。本地应用在连接到web应用后,根据所述协议中定义的识别号,从所述web应用中找出所述HTML元素,并从所述元素的用于存放特别指令的属性中取出所述特别指令。
在具体实施中,特别指令可以由一条或多条子指令组成,还可以包括用于从web应用中取出其它特别指令的信息。
本发明还提供了一种web应用和本地应用交换信息的方法,所述方法包括在设计与所述web应用交互的协议时:(1)在所述web应用的HTML元素中指定一个用于将交换信息从web应用传至本地应用的传出元素和一个用于将交换信息从本地应用传至web应用的传入元素,必要时添加新的元素;(2)为所述传出和传入元素分配识别号,并确定其用于存放交换信息的属性;(3)在所述传出元素中指定传出事件,并将所述传出事件的处理函数指向所述本地应用中定义的处理函数;(4)在所述传入元素中指定传入事件,并将所述传入事件的处理函数指向所述web应用中定义的处理函数。至此,所述本地应用就可以和所述web应用进行信息交换。
当所述web应用需要把交换信息传递给所述本地应用时,所述web应用:(1)将所述交换信息存放于所述传出元素的用于存放交换信息的属性中;(2)通过触发所述传出元素中指定的传出事件来通知所述本地应用有需要其处理的交换信息;(3)在所述本地应用中定义的处理函数从所述传出元素的用于存放交换信息的属性中取出所述交换信息;
当所述本地应用需要把交换信息传递给所述web应用时,所述本地应用:(1)将所述交换信息存入所述传入元素的用于存放交换信息的属性中;(2)通过触发所述传入元素中指定的传入事件来通知所述web应用有需要其处理的交换信息;(3)在所述web应用中定义的处理函数从所述传入元素的用于存放交换信息的属性中取出所述交换信息。
在具体实施中,所述特别指令可以包括上面所述的交互协议的内容,在执行所述特别指令的相关内容时所述web应用和所述本地应用根据上面所述的方法交换信息。
在阅读完下面的具体实施方式以及相关附图后,本发明的的思想,特征和优点会更加明确。
(四)附图说明
图1-web应用的运作环境
图2-交互协议
图3-特别指令及其在web应用中的存放方法
图4-web应用和本地应用交互的基本流程
图5-特别指令和子指令
图6-特别指令和其它特别指令
图7-用户认证示范例
图8-解密示范例
图9-信息交换的方法
(五)具体实施方式
图1展示了web应用222的一个运作环境:一个web应用服务器100,一个web浏览器220和一个本地应用230,其中web浏览器220和本地应用230在同一个本地计算装置上运行。web浏览器220为web应用222提供了一个运行环境,也为用户提供了一个和web应用222交互的用户界面。本地应用230的作用是帮助web应用222获取其不能直接从本地计算装置200获得的本地服务。
值得注意的是图1中所示的交互协议800,该协议定义了如何与web应用222交互以及web应用222需要得到的本地服务。本地应用230也是根据交互协议800的要求设计开发出来,能够和web应用222交互,并为web应用222提供其需要得到的本地服务。
如图2所示,在一个具体的实施中,交互协议800包括特别指令820和特别指令存放方法860。特别指令820的内容由web应用222的需求而定,包括:如何与web应用222交互,以及web应用222需要得到的本地服务。特别指令820的格式也可以是多种多样的。
特别指令存放方法860基本上讲有两种:一种是将特别指令820存入本地应用230中,另一种方法是将特别指令820存入web应用222中。第一种方法的好处是本地应用230在连接到web应用222后可以直接执行存于本地应用230中的特别指令820。如果采用第二种方法,本地应用230在连接到web应用222后,首先需要从web应用222中取出特别指令820,然后再执行特别指令820的内容;这种方法的好处是本地应用230可以设计得更加通用,因为特别指令820是从web应用222得到的,而不是事先存于本地应用230中。
如图3所示,将特别指令820存入web应用222的方法可以采用在特别指令存放方法860中定义识别号,并根据所述识别号将特别指令820存入web应用222中;本地应用230根据特别指令存放方法860从web应用222在浏览器220的DOM中取出特别指令820。
一种将特别指令820存放在web?应用222中的具体方法包括:(1)在web应用222中指定用于存放特别指令820的HTML元素,必要时可以在web应用222中添加新的HTML元素;(2)将交互协议800的特别指令存放方法860中定义的识别号分配给所述HTML元素,分配的方法可以是将所述识别号存入所述HTML元素的id属性中;(3)在所述指定HTML元素的属性中指定用于存放特别指令的属性;(4)将特别指令820存入所述HTML元素的用于存放特别指令的属性中。
当本地应用230通过web浏览器220连接到web应用222后,根据特别指令存放方法860中定义的识别号,从web应用222在浏览器220的DOM中找出所述HTML元素,并从所述HTML元素的用于存放特别指令的属性中取出特别指令820。然后本地应用230按照特别指令820的内容与web应用222交互,并为其提供本地服务。
参阅图4所示,在一个具体实施中web应用222和本地应用230交互的基本流程,包括以下步骤:
第一,启动web应用。用户使用web浏览器220启动web应用222,其方法是将web浏览器220指向提供web应用222的web应用服务器100的URL。
第二,请求送至web应用服务器。web浏览器220将该请求通过计算机网络送至web应用服务器100;响应于该请求,web应用服务器100将web应用222通过计算机网络发送给web浏览器220。
第三,web应用下载到浏览器。web浏览器220通过计算机网络从web应用服务器100接受web应用222,并开始运行web应用222。作为web应用222的运行环境,web浏览器220为web应用222建立起DOM。
第四,连接于web浏览器。本地应用230通过业界已知的方法连接到web浏览器220,并进一步通过web浏览器220访问web应用222的DOM。
第五,取出特别指令。如果特别指令存放方法860是将特别指令820存放于web应用222中,本地应用230通过web浏览器220连接到web应用222后,使用特别指令存放方法860中规定的方法从web应用222在web浏览器220的DOM中取出特别指令820。如果特别指令存放方法860是将特别指令820存放于本地应用230中,本地应用230不执行这一步。
第六,执行特别指令。本地应用230得到特别指令820后,首先对所得到的特别指令820进行解析,以获取指令的内容,然后处理所述指令的内容,处理的方法是根据所述指令的内容对web应用222在web浏览器220的DOM进行加工。
对web应用222在web浏览器220的DOM进行加工包括在web应用222的DOM中完成以下一项或多项:(1)添加新的HTML元素;(2)删除HTML元素;(3)修改HTML元素的属性;(4)触发HTML元素的事件,以及(5)修改HTML元素的事件处理函数,使其指向在本地应用230中定义的处理函数,这样一来本地应用230就可以追踪和处理web应用222中的事件。
执行特别指令也可以包括追踪和处理事件。如果特别指令820中规定了需要本地应用230追踪和处理的事件,在解析和处理特别指令820时,web应用222在web浏览器的DOM中相应的HTML元素的事件处理函数已经被修改并指向本地应用中定义的处理函数。当特别指令820中规定的需要追踪和处理的事件发生时,在本地应用230中定义的处理函数被调用,所述处理函数根据特别指令820的内容处理该事件,为web应用222提供服务。
如图5所示,在一个具体实施中,特别指令820包括一个或多个子指令。本地应用230按照顺序解析和处理每一条子指令。
如图6所示,在一个具体实施中,除了特别指令820外,web应用222还可以存放一个或多个其它特别指令880。存入和取出其它特别指令880的方法和上面介绍的存入和取出特别指令820的方法是一样的。
在另一个具体实施中,特别指令820包括从web应用222中取出其它特别指令880的信息;本地应用230根据所述信息从web应用222中取出其它特别指令880,然后根据前面介绍的执行特别指令820的方式完成本地应用和web应用的交互。
在介绍完web应用222和本地应用230交互的基本流程后,下面通过几个示范例来对本发明的思想做进一步描述。
在下面介绍的示范例中,特别指令820采用了XML。XML特别指令820是用前面介绍的特别指令存放方法860存放于web应用222中;本地应用根据特别指令存放方法860从web应用222的DOM中取出XML特别指令820。
存取特别指令示范利
在一个存取特别指令的示范例子中,web应用222中的一个input元素被指定用来存放特别指令820,同时特别指令存放方法860规定将识别号cmds_id分配给所述input元素的id属性中,并将特别指令820存于所述input元素的value属性中。该示范例相关的HTML元素的定义如下:
<input type=″hidden″id=″cmds_id″value=″特别指令820″/>
本地应用230根据特别指令存放方法860中定义的识别号cmds_id从web应用222的DOM中找出存有特别指令820的id属性为cmds_id的HTML元素后,按照特别指令存放方法860的规定从所述HTML元素的value属性中取出特别指令820,如下例所示:
document.getElementById(″cmds_id″).value
用户认证示范例
现参阅图7所示的用户认证示范例,该示范例采用数字签名来实现用户认证。产生数字签名需要访问用户的私钥,所以web应用222需要通过本地应用230来获得用户的数字签名。该示范例中的web应用222的表单设计如下:
<p><strong>登录“WEB应用”</strong></p>
<form action=″AuthCHS.asp″id=″auth_form″method=″post″>
<input type=″hidden″id=″cmds_id″value=″<%=sCmdsXML%>″/>
<label>用户名:</label>
<input type=″text″id=″user_id″name=″user_id″/>
<input type=″hidden″id=″nonce_from_server″value=″<%=sNonce%>″/>
<input type=″hidden″id=″user_signature″name=″user_signature″/>
<input type=″button″id=″submit_button″value=″登录″/>
</form>
该表单有五个input元素,其中,id为cmds_id的input元素的value属性以<%=sCmdsXML%>形式存有特别指令820,和前面介绍的存取特别指令示范利中所示的方法是一样的,id为user_id的input元素的value属性用于存储用户输入的用户名,id为nonce_from_server的input元素的value属性存有从web应用服务器100而来的nonce,id为user_signature的input元素的value属性用于存储用户的数字签名,id为submit_button的input元素用于提交表单。
下面的XML是根据该示范例设计的特别指令820的内容和格式:
<?xml version=″1.0″encoding=″utf-8″?>
<cmds>
<cmd>
<trigger>
<element id=″submit_button″>
<events>
<event>onclick</event>
</events>
</element>
</trigger>
<action name=″sign″>
<source>
<element id=″nonce_from_server″>
<attributes>
<attribute>value</attribute>
</attributes>
</element>
</source>
<target>
<element id=″user_signature″>
<attributes>
<attribute>value</attribute>
</attributes>
</element>
</target>
</action>
<action name=″submit″>
<form id=″auth_form″/>
</action>
</cmd>
</cmds>
该指令的含义是:“在接收到识别号为submit_button的HTML元素的onclick事件时,取出识别号为nonce_from_server的HTML元素的value属性的值,将其进行数字签名后存于识别号为user_signature的HTML元素的value属性之中,最后提交识别号为auth_form的表单”。
本地应用230采用存取特别指令示范例中描述的方法从web应用222的DOM中取出特别指令820。得到该指令后,本地应用230(1)在web应用222的DOM中找到识别号为submit_button的HTML元素;(2)修改该HTML元素的onclick事件的处理函数,使其指向本地应用中定义的处理函数,以使本地应用230能追踪和处理该事件。
该事件发生后,本地应用230(1)取出识别号为nonce_from_server的HTML元素的value属性的值,将其进行数字签名后存于识别号为user_signature的HTML元素的value属性之中;(2)提交识别号为auth_form的HTML表单。这样一来,web应用222就通过本地应用230得到了其不能直接得到的本地服务,即用户的数字签名。
需要说明的是,该示范例采用了ActiveServerPage(ASP)技术,所以前面所述的XML特别指令820以<%=sCmdsXML%>形式存入id为cmds_id的input元素的value属性中,其中sCmdXML为web应用服务器100中的一个存有特别指令820的变量。同样,sNonce也是web应用服务器100中的一个存有该服务器生成的nonce的变量。
解密示范例
现参阅图8所示的解密示范例,当用户选择“显示明文”时,需要使用用户的私钥来解密被加密的内容。该示范例中有关的HTML元素的定义如下:
<p><strong>WEB应用:解密</strong></p>
<div id=″cmds_id″value=″<%=sCmdsXML%>″/>
<input type=″checkbox″id=″show_clear_text″/>
<label>显示明文</label>
<div id=″content″style=″font-family:Courier New;font-size:small″>
MIIBMwYJKoZIhvcNAQcDoIIBJDCCASACAQAxgeUwgeICAQAwSzA3MRIwEAYDVQQD<br/>
EwlCb2IgRXZhbnMxITAfBgkqhkiG9w0BCQEWEmJldmFuc0BteGNzb2Z0LmNvbQIQ<br/>
MHURSKzjFnCPnEVXUG/ZwzANBgkqhkiG9w0BAQEFAASBgIeWqGTxaYwB4Y0DkWBC<br/>
CWF0Ru/covLyBD7goilj3MvK/bYnfWG1lg4jxFhgeP8d179G4fLKvIxJpaFvR019<br/>
rvvek2vVI4HNJXkpV/xeswHoSH4K1QZ53uXb7xPcrVKhFZm4RLf1tYyKTX1QaqLW<br/>
35I3NUWNMRKqJAIEnUBlilPAMDMGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI3spI<br/>
ORaDAP2AEBi1/5rhG2KsCsjlTTkTe4I=<br/>
</div>
其中,特别指令820以<%=sCmdsXML%>形式存于id为cmds_id的div元素的value属性中,和前面介绍的存取特别指令示范利中所示的方法是一样的,加密的内容存于id为content的div元素的innerText属性之中,另外还有一个id为show_clear_text的input复选框元素。当用户复选该复选框时,解密后的明文就取代密文在web浏览器220中显示出来。
针对该示范例设计的XML特别指令820的内容和格式如下:
<?xml version=″1.0″encoding=″utf-8″?>
<!--Instructions for local application-->
<cmds>
<cmd>
<trigger>
<element id=″show_clear_text″>
<events>
<event>onclick</event>
</events>
</element>
</trigger>
<action name=″decrypt″>
<source>
<element id=″content″>
<attributes>
<attribute>innerText</attribute>
</attributes>
</element>
</source>
<target>
<element id=″content″>
<attributes>
<attribute>innerText</attribute>
</attributes>
</element>
</target>
</action>
</cmd>
</cmds>
该指令的含义是:“在接收到识别号为show_clear_text的HTML元素的onclick事件时,取出识别号为content的HTML元素的innerText属性的值,将其解密后存于识别号为content的HTML元素的innerText属性之中”。
本地应用230采用存取特别指令示范例中描述的方法从web应用222的DOM中取出特别指令820。得到该指令后,本地应用230(1)在web应用222的DOM中找到识别号为show_clear_text的HTML元素;(2)修改该HTML元素的onclick事件的处理函数,使其指向本地应用中定义的处理函数,以使本地应用能追踪和处理该事件。该事件发生后,本地应用230(1)取出识别号为content的HTML元素的innerText属性的值,使用用户的私钥将其解密后存于识别号为content的HTML元素的innerText属性之中。这样以来web应用222通过本地应用230得到了本地服务,即使用用户的私钥对密文解密。
同样需要说明的是,该示范例采用了ASP技术,所以前面所述的XML特别指令820以<%=sCmdsXML%>方式存入id为cmds_id的div元素的value属性中,其中sCmdXML为web应用服务器100中的一个存有特别指令820的变量。
其它特别指令示范例
在下面示范例中,图6所示的其它特别指令880的存放方法和存放特别指令820的方法一样的。
<input type=″hidden″id=″cmds_id″value=″特别指令820″/>
<input type=″hidden″id=″other_cmds″value=″其它特别指令880″/>
针对上面所述的其它特别指令880在web应用中的存放方式设计的XML特别指令820中取出其他特别指令880的部分如下:
<?xml version=″1.0″encoding=″utf-8″?>
<cmds>
<cmd>
<action name=″loadcmds″>
<element id=″other_cmds″>
<attributes>
<attribute>value</attribute>
</attributes>
</element>
</action>
</cmd>
</cmds>
其含义是“从识别号为other_cmds的HTML元素的value属性中取出其它特别指令880”。
检查本地应用状态和能力的示范例
该示范例用于介绍web应用查寻本地应用状态和能力的方法。在本示范例中,web应用222包括一个id为local_app_info的隐藏input元素,如下所示:
<input type=″hidden″id=″local_app_info″value=″″/>
该input元素的value属性的初始值为空,表示本地应用230的状态和能力未知。该input元素的value属性的值将由本地应用230来设置。web应用222根据该input元素的value属性的值来得到本地应用230的状态和能力,以便根据本地应用230的状态和能力做出合适的选择和动作,比如在本地应用230没有运行时,提示用户启动本地应用230。
针对该示范例所设计的特别指令820如下:
<?xml version=″1.0″encoding=″utf-8″?>
<cmds>
<cmd>
<action name=″info″>
<element id=″local_app_info″>
<attributes>
<attribute>value</attribute>
</attributes>
</element>
</action>
</cmd>
</cmds>
该特别指令820的含义是“将有关本地应用230的状态和能力的信息存入id为local_app_info的HTML元素的value属性中”。本地应用230根据该指令的要求从web应用222的DOM中找出id为local_app_info的HTML元素,然后将有关本地应用230的状态和能力的信息存入id为local_app_info的HTML元素的value属性中。
假设该示范例中的本地应用230可以加密和数字签名,该元素的value属性的值可设为“running=1;encrypt=1;sign=1”,表示“本地应用正在运行,可以做加密和数字签名”。经过本地应用230修改后的input元素就成了:
<input type=″hidden″id=″local_app_info″value=″running=1;encrypt=1;sign=1″
/>
需要指出的一点是,web应用222可以用查询的方式来得到该反馈信息,也可以通过给该元素在web应用222中设计和指派事件处理函数的方式来得到该反馈信息。
一种web应用和本地应用交换信息的方法
现在参阅图9所示的一种web应用和本地应用交换信息的方法的实施例。
首先,在web应用222中添加一个用于将交换信息从web应用222传至本地应用230的传出元素和一个用于将交换信息从本地应用230传至web应用222的传入元素;给所述传出元素的识别号定义为info_to_local_app,所述传入元素的识别号定义为info_from_local_app,同时约定交换信息存于传出和传入元素的value属性中;在所述传出元素中指定onclick为传出事件;在所述传入元素中指定onclick为传入事件,并将所述传入事件的处理函数指向web应用222中定义的处理函数ProcessLocalInfo。
该示范例中相关的HTML元素的定义如下:
<div>
<input type=″hidden″id=″info_to_local_app″/>
<input type=″hidden″id=″info_from_local_app″onclick=″ProcessLocalInfo()″
/>
</div>
在连接到web应用222后,本地应用230用所述传出元素的识别号info_to_local_app从web应用222中找出所述传出元素,然后修改所述传出事件的处理函数,使其指向本地应用230中定义的处理函数ProcessWebInfo;至此,本地应用230就可以和web应用222进行信息交换。
当web应用222需要把交换信息传递给本地应用230时,web应用222(1)将需要传递的交换信息存入所述传出元素的value属性中;(2)通过触发传出元素的onclick事件的方式通知本地应用230,有需要其处理的交换信息;(3)本地应用230的处理函数ProcessWebInfo从所述传出元素的value属性中取出交换信息,进行处理。
同样的方式,当本地应用230需要把交换信息传递给web应用222时,本地应用230(1)将需要传递的交换信息存入所述传入元素的value属性中;(2)通过触发传入元素的onclick事件的方式通知web应用222,有需要其处理的交换信息;(3)web应用222的处理函数ProcessLocalInfo从所述传入元素的value属性中取出交换信息,进行处理。
描述上述交互过程的XML特别指令820可以定义如下:
<?xml version=″1.0″encoding=″utf-8″?>
<cmds>
<!--其它子指令-->
<cmd>
<action name=″interact″>
<input>
<element id=″info_to_local_app″>
<attribute>value</attribute>
<event>onclick</event>
</element>
</input>
</action>
<action name=″interact″>
<output>
<element id=″info_from_local_app″>
<attribute>value</attribute>
<event>onclick</event>
</element>
</output>
</action>
</cmd>
<!--其它子指令-->
</cmds>
该特别指令的含义是“(1)在id为info_to_local_app的HTML元素的onclick事件发生时,从该元素的value属性中取出web应用222传递给本地应用230的交换信息;(2)本地应用230在传回交换信息给web应用222时,将交换信息存于id为info_from_local_app的HTML元素的value属性中,然后触发该HTML元素的onclick事件通知web应用。”
得到该指令后,本地应用230开始监听id为info_to_local_app的HTML元素的onclick事件,在该事件发生时从该元素的value属性中取出web应用222传给本地应用230的交换信息,同时根据指令的要求,在需要将本地应用230的交换信息传回给web应用222时,将所述信息存于id为info_from_local_app的HTML元素的value属性中,然后触发该HTML元素的onclick事件通知web应用222。
需要强调的是,上述示范例是为了介绍本发明的思想,实施本发明的具体方法可以是多种多样的。
Claims (20)
- 【权利要求1】一种实现web应用和本地应用交互的方法,采用了本地应用根据web应用的需求来驱动web应用在web浏览器中的HTML文档对象模型(DOM)的方式来实现web应用和本地应用的交互,其特征在于,所述方法包括:a.提供一个web应用;b.提供一个能运行web浏览器的计算装置,其中所述web浏览器为所述web应用提供了一个运行环境,也为用户提供了一个和所述web应用交互的用户界面;c.设计与所述web应用交互的协议;d.提供一个本地应用,其中所述本地应用是根据所述协议的要求开发出来的;e.将所述web应用加载于所述web浏览器上运行,建立起所述web应用的DOM;f.在所述计算装置上运行所述本地应用;g.所述本地应用连接到装载了所述web应用的所述web浏览器上,以访问所述web应用的DOM;h.通过直接访问所述web应用的DOM的方式,所述本地应用按照所述协议的要求完成与所述web应用的交互。
- 【权利要求2】如权利要求1所述的方法,其特征在于,所述协议的内容包括:如何与所述web应用交互,以及所述web应用需要得到的本地服务。
- 【权利要求3】如权利要求2所述的方法,其特征在于,所述本地服务包括所述计算装置通过其硬件和软件提供的服务。
- 【权利要求4】如权利要求3所述的方法,其特征在于,所述硬件和软件包括可连接到所述计算装置的硬件以及其上的软件。
- 【权利要求5】如权利要求1所述的方法,其特征在于,设计与所述web应用交互的协议包括:根据所述web应用设计特别指令的内容和格式。
- 【权利要求6】如权利要求5所述的方法,其特征在于,还包括:在连接到所述web浏览器后,所述本地应用执行所述特别指令来完成所述协议要求的与所述web应用的交互。
- 【权利要求7】如权利要求6所述的方法,其特征在于,所述本地应用执行所述特别指令包括根据所述特别指令的内容完成以下一项或多项:a.对所述web应用的DOM进行加工;b.追踪和处理所述web应用的DOM中的事件。
- 【权利要求8】如权利要求7所述的方法,其特征在于,对所述web应用的DOM进行加工包括在所述web应用的DOM中完成以下一项或多项:a.添加新的HTML元素;b.删除HTML元素;c.修改HTML元素的属性;d.触发HTML元素的事件;e.修改HTML元素的事件处理函数。
- 【权利要求9】如权利要求8所述的方法,其特征在于,修改HTML元素的事件处理函数的方法是使其指向所述本地应用中定义的处理函数,以使所述本地应用能追踪和处理在所述web应用中发生的事件。
- 【权利要求10】如权利要求7所述的方法,其特征在于,追踪和处理所述web应用的DOM中的事件包括:当事件发生时所述本地应用根据所述特别指令的内容修改所述web应用的DOM。
- 【权利要求11】如权利要求5所述的方法,其特征在于,还包括:在所述与web应用交互的协议中定义识别号,并根据所述识别号将所述特别指令存入所述web应用中。
- 【权利要求12】如权利要求11所述的方法,其特征在于,将所述特别指令存入所述web应用中的方法包括:a.在所述web应用中指定HTML元素,必要时添加新的元素;b.将所述识别号分配给所述指定HTML元素;c.在所述指定HTML元素的属性中指定用于存放特别指令的属性;d.将所述特别指令存入所述指定HTML元素的指定用于存放特别指令的属性中。
- 【权利要求13】如权利要求12所述的方法,其特征在于,将所述识别号分配给所述指定HTML元素的方法是将所述识别号存放于所述指定HTML元素的id属性中。
- 【权利要求14】如权利要求12所述的方法,其特征在于,还包括:在所述本地应用连接到所述web浏览器后,根据所述识别号从所述web应用中找出所述指定HTML元素,并从其指定用于存放特别指令的属性中取出所述特别指令。
- 【权利要求15】如权利要求5所述的方法,其特征在于,所述特别指令包括一条或多条子指令。
- 【权利要求16】16.如权利要求5所述的方法,其特征在于,所述特别指令包括从所述web应用中取出其它特别指令的内容。
- 【权利要求17】如权利要求1所述的方法,其特征在于,设计与所述web应用交互的协议包括:a.在所述web应用的HTML元素中指定一个用于将交换信息从web应用传至本地应用的传出元素和一个用于将交换信息从本地应用传至web应用的传入元素,必要时添加新的元素;b.为所述传出和传入元素分配识别号,并确定其用于存放交换信息的属性;c.在所述传出元素中指定传出事件,并将所述传出事件的处理函数指向所述本地应用中定义的处理函数;d.在所述传入元素中指定传入事件,并将所述传入事件的处理函数指向所述web应用中定义的处理函数;至此,所述本地应用就可以和所述web应用交换信息,方法包括:当所述web应用需要把交换信息传递给所述本地应用时,所述web应用:a.将所述交换信息存放于所述传出元素的用于存放交换信息的属性中;b.通过触发所述传出元素中指定的传出事件来通知所述本地应用有需要其处理的交换信息;c.在所述本地应用中定义的处理函数从所述传出元素的用于存放交换信息的属性中取出所述交换信息;当所述本地应用需要把交换信息传递给所述web应用时,所述本地应用:a.将所述交换信息存入所述传入元素的用于存放交换信息的属性中;b.通过触发所述传入元素中指定的传入事件来通知所述web应用有需要其处理的交换信息;c.在所述web应用中定义的处理函数从所述传入元素的用于存放交换信息的属性中取出所述交换信息。
- 【权利要求18】如权利要求5所述的方法,其特征在于,所述特别指令包括如权利要求17中所述的交互协议的内容,在执行所述特别指令的相关内容时所述web应用和所述本地应用以权利要求17中所述的方法交换信息。
- 【权利要求19】一种实现权利要求1中所述的本地应用的计算机程序,其特征在于,当所述计算机程序由计算装置执行时,使所述计算装置执行如权利要求1所述的方法。
- 【权利要求20】一种能够执行如权利要求1所述的方法的计算机控制的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008103001068A CN101488143A (zh) | 2008-01-16 | 2008-01-16 | 一种新型的web应用和本地应用的交互模式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008103001068A CN101488143A (zh) | 2008-01-16 | 2008-01-16 | 一种新型的web应用和本地应用的交互模式 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101488143A true CN101488143A (zh) | 2009-07-22 |
Family
ID=40891037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008103001068A Pending CN101488143A (zh) | 2008-01-16 | 2008-01-16 | 一种新型的web应用和本地应用的交互模式 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101488143A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102640136A (zh) * | 2009-12-03 | 2012-08-15 | 微软公司 | web应用与浏览器以外的进程之间的通信通道 |
CN102830956A (zh) * | 2011-06-14 | 2012-12-19 | 上海博泰悦臻电子设备制造有限公司 | 一种车载系统及其需求处理装置 |
CN102929638A (zh) * | 2012-11-07 | 2013-02-13 | 广州市动景计算机科技有限公司 | 扩展WebApp应用功能的方法和系统 |
CN103902534A (zh) * | 2012-12-24 | 2014-07-02 | 联想(北京)有限公司 | 一种网页程序触发本地操作的方法和装置 |
CN103917951A (zh) * | 2012-09-19 | 2014-07-09 | 华为技术有限公司 | 应用调用的方法及操作系统、浏览器 |
CN104102537A (zh) * | 2013-04-07 | 2014-10-15 | 华为技术有限公司 | 一种应用调用方法及用户终端 |
CN104808971A (zh) * | 2014-01-24 | 2015-07-29 | 北京三星通信技术研究有限公司 | 网络应用程序管理器、方法、装置和移动终端 |
CN104932910A (zh) * | 2014-03-20 | 2015-09-23 | 中国移动通信集团公司 | 应用程序接口扩展的方法及系统 |
CN105068802A (zh) * | 2015-08-06 | 2015-11-18 | 中国科学院软件研究所 | 一种跨设备运行的Web应用软件实现系统和方法 |
CN105868312A (zh) * | 2016-03-25 | 2016-08-17 | 四川长虹电器股份有限公司 | 一种基于浏览器的设备管理方法及装置 |
CN105915657A (zh) * | 2016-06-30 | 2016-08-31 | 北京奇虎科技有限公司 | 数据的同步方法、装置及客户端 |
CN105959278A (zh) * | 2016-04-28 | 2016-09-21 | 北京网康科技有限公司 | 一种调用vpn的方法、设备和系统 |
CN106649628A (zh) * | 2016-12-06 | 2017-05-10 | 北京大学 | 网页可视化区域的交互增强方法及系统 |
CN103886029B (zh) * | 2014-03-03 | 2017-10-27 | 百度在线网络技术(北京)有限公司 | 网页应用的实现方法、装置、服务器及系统 |
CN108509189A (zh) * | 2018-04-13 | 2018-09-07 | 南京新贝金服科技有限公司 | 一种基于dom的h5时间选择器的组件统一实现方法 |
CN108885547A (zh) * | 2016-04-28 | 2018-11-23 | 微软技术许可有限责任公司 | 基于有状态桌面应用的分布式应用 |
WO2021203343A1 (zh) * | 2020-04-09 | 2021-10-14 | 北京微动数联科技有限公司 | Web请求处理方法和装置 |
WO2021244644A1 (zh) * | 2020-06-05 | 2021-12-09 | 林俊孝 | 动态整合应用程序的方法及其软件系统与机器 |
DE112010004980B4 (de) | 2009-12-24 | 2023-03-30 | International Business Machines Corporation | Verbessern der Leistungsfähigkeit von auf Vorlagen beruhenden Javascript-Fensterobjekten |
-
2008
- 2008-01-16 CN CNA2008103001068A patent/CN101488143A/zh active Pending
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102640136A (zh) * | 2009-12-03 | 2012-08-15 | 微软公司 | web应用与浏览器以外的进程之间的通信通道 |
CN102640136B (zh) * | 2009-12-03 | 2016-03-02 | 微软技术许可有限责任公司 | web应用与浏览器以外的进程之间的通信通道 |
US9390172B2 (en) | 2009-12-03 | 2016-07-12 | Microsoft Technology Licensing, Llc | Communication channel between web application and process outside browser |
DE112010004980B4 (de) | 2009-12-24 | 2023-03-30 | International Business Machines Corporation | Verbessern der Leistungsfähigkeit von auf Vorlagen beruhenden Javascript-Fensterobjekten |
CN102830956B (zh) * | 2011-06-14 | 2016-08-10 | 上海博泰悦臻电子设备制造有限公司 | 一种车载系统及其需求处理装置 |
CN102830956A (zh) * | 2011-06-14 | 2012-12-19 | 上海博泰悦臻电子设备制造有限公司 | 一种车载系统及其需求处理装置 |
CN103917951A (zh) * | 2012-09-19 | 2014-07-09 | 华为技术有限公司 | 应用调用的方法及操作系统、浏览器 |
CN103917951B (zh) * | 2012-09-19 | 2017-04-19 | 华为技术有限公司 | 应用调用的方法及操作系统、浏览器 |
CN102929638A (zh) * | 2012-11-07 | 2013-02-13 | 广州市动景计算机科技有限公司 | 扩展WebApp应用功能的方法和系统 |
WO2014071771A1 (zh) * | 2012-11-07 | 2014-05-15 | 广州市动景计算机科技有限公司 | 扩展WebApp应用功能的方法和系统 |
CN103902534A (zh) * | 2012-12-24 | 2014-07-02 | 联想(北京)有限公司 | 一种网页程序触发本地操作的方法和装置 |
CN103902534B (zh) * | 2012-12-24 | 2018-04-27 | 联想(北京)有限公司 | 一种网页程序触发本地操作的方法和装置 |
CN104102537A (zh) * | 2013-04-07 | 2014-10-15 | 华为技术有限公司 | 一种应用调用方法及用户终端 |
CN104102537B (zh) * | 2013-04-07 | 2017-09-29 | 华为技术有限公司 | 一种应用调用方法及用户终端 |
CN104808971A (zh) * | 2014-01-24 | 2015-07-29 | 北京三星通信技术研究有限公司 | 网络应用程序管理器、方法、装置和移动终端 |
CN104808971B (zh) * | 2014-01-24 | 2020-02-21 | 北京三星通信技术研究有限公司 | 网络应用程序管理器、方法、装置和移动终端 |
CN103886029B (zh) * | 2014-03-03 | 2017-10-27 | 百度在线网络技术(北京)有限公司 | 网页应用的实现方法、装置、服务器及系统 |
CN104932910A (zh) * | 2014-03-20 | 2015-09-23 | 中国移动通信集团公司 | 应用程序接口扩展的方法及系统 |
CN105068802A (zh) * | 2015-08-06 | 2015-11-18 | 中国科学院软件研究所 | 一种跨设备运行的Web应用软件实现系统和方法 |
CN105068802B (zh) * | 2015-08-06 | 2018-10-02 | 中国科学院软件研究所 | 一种跨设备运行的Web应用软件实现系统和方法 |
CN105868312A (zh) * | 2016-03-25 | 2016-08-17 | 四川长虹电器股份有限公司 | 一种基于浏览器的设备管理方法及装置 |
CN105868312B (zh) * | 2016-03-25 | 2019-09-10 | 四川长虹电器股份有限公司 | 一种基于浏览器的设备管理方法及装置 |
CN105959278A (zh) * | 2016-04-28 | 2016-09-21 | 北京网康科技有限公司 | 一种调用vpn的方法、设备和系统 |
CN108885547A (zh) * | 2016-04-28 | 2018-11-23 | 微软技术许可有限责任公司 | 基于有状态桌面应用的分布式应用 |
CN105915657A (zh) * | 2016-06-30 | 2016-08-31 | 北京奇虎科技有限公司 | 数据的同步方法、装置及客户端 |
CN105915657B (zh) * | 2016-06-30 | 2020-07-24 | 北京奇虎科技有限公司 | 数据的同步方法、装置及客户端 |
CN106649628B (zh) * | 2016-12-06 | 2020-08-25 | 北京大学 | 网页可视化区域的交互增强方法及系统 |
CN106649628A (zh) * | 2016-12-06 | 2017-05-10 | 北京大学 | 网页可视化区域的交互增强方法及系统 |
CN108509189A (zh) * | 2018-04-13 | 2018-09-07 | 南京新贝金服科技有限公司 | 一种基于dom的h5时间选择器的组件统一实现方法 |
WO2021203343A1 (zh) * | 2020-04-09 | 2021-10-14 | 北京微动数联科技有限公司 | Web请求处理方法和装置 |
WO2021244644A1 (zh) * | 2020-06-05 | 2021-12-09 | 林俊孝 | 动态整合应用程序的方法及其软件系统与机器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101488143A (zh) | 一种新型的web应用和本地应用的交互模式 | |
US20090083632A1 (en) | Representing user interactions as a synchronous action in a business process flow | |
CN103051600A (zh) | 文档访问控制方法和系统 | |
Baboi et al. | Dynamic microservices to create scalable and fault tolerance architecture | |
CN105357027B (zh) | 基于大数据的轻量级数据服务总线系统 | |
CN103620602A (zh) | 对集合中的资源的持久性密钥访问 | |
CN113704210A (zh) | 数据共享方法和电子设备 | |
CA2565508C (en) | Secure license key method and system | |
CN101382893A (zh) | 一种基于Web服务的构件在线组装方法 | |
WO2015058293A1 (en) | Method and processes for securely autofilling data fields in a software application | |
CN111488372A (zh) | 一种数据处理方法、设备及存储介质 | |
CN113486122A (zh) | 数据共享方法和电子设备 | |
EP3513316B1 (en) | Personalized search environment | |
CN111274597A (zh) | 一种数据处理方法以及设备 | |
EP2556461A1 (en) | Digital asset authentication system and method | |
CN111798338A (zh) | 一种智慧旅游gds方法、系统及中间服务器 | |
CN107533468A (zh) | 用于云和设备套件的可扩展性捆绑包 | |
CN110266699A (zh) | 应用于区块链的抽奖数据上链方法及其设备 | |
Zaplata et al. | Towards mobile process as a service | |
CN112906057B (zh) | 一种可信构建链上隐私链上交易的计算方法 | |
Janciak et al. | Workflow enactment engine for WSRF-compliant services orchestration | |
CN115567550A (zh) | 一种基于区块链和国密算法的文件信息数据存储方法 | |
US20210006634A1 (en) | Secure and private web browsing system and method | |
Gec et al. | Smart contracts for container based video conferencing services: Architecture and implementation | |
CN102779043B (zh) | 一种软件连接的方法及工具软件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090722 |