CN102567125B - 一种浏览器页面间通信的方法 - Google Patents
一种浏览器页面间通信的方法 Download PDFInfo
- Publication number
- CN102567125B CN102567125B CN201110449883.0A CN201110449883A CN102567125B CN 102567125 B CN102567125 B CN 102567125B CN 201110449883 A CN201110449883 A CN 201110449883A CN 102567125 B CN102567125 B CN 102567125B
- Authority
- CN
- China
- Prior art keywords
- page
- browser
- receiving end
- plug
- transmitting terminal
- 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.)
- Active
Links
Abstract
本发明提出了一种浏览器页面间通信的方法。于该方法中:通信的发送端页面借助浏览器插件通过浏览器JavaScript引擎将数据从浏览器页面传递到通信的发送端页面所在的浏览器程序进程;而通信的接收端页面借助浏览器插件通过浏览器JavaScript引擎实现接收端进程获得的数据到浏览器页面JavaScript函数的调用映射;并且通信的发送端及接收端页面所在的浏览器程序进程之间是通过操作系统进程间通信进行数据传送。本发明提出的方法是基于事件模型,发送端和接收端不需要进行相互握手的请求和确认,所以本发明这种浏览器不同页面间的JavaScript函数间的事件递交和数据通信方法具有很高的效率以及实时性。
Description
技术领域
本发明涉及一种浏览器页面间通信的方法。
背景技术
浏览器页面间通信是指浏览器访问的两个Web页面中的JavaScript程序之间进行数据传递或事件提交的过程。目前浏览器访问的两个Web页面中的程序进行通信,都需要Web服务器的参与,通过Ajax技术一个页面将数据传递给Web服务器,在由Web服务器去服务器获取该数据。受限与Web服务和网络性能,通信的实时性较低,通信数据量较小;同时通信的形式受限于服务器是否提供服务。
通过Ajax技术实现页面对服务器传递的数据接收,由于服务器没有向浏览器推送数据的能力,只能页面不断的向浏览器发送请求,才能从服务器获取相关数据,这样页面就需要不断的向服务器轮训发送请求,以获取其他页面向本页面传递数据。这种轮训的机制,不仅实时性差,而且对本地系统具有一定的资源消耗。
受限于服务和网络,在需要两个页面间进行实时性较高的通信时,通过传统的Ajax技术性能是有限的。而且传统的技术必须在有网络的情况下才能够通信,在脱机状态下页面之间就无法实现通信。在数据量较大时,也很难保证数据的实时性。
发明内容
针对以上原因,本发明的主要目的在于提出一种新的浏览器不同页面间JavaScript函数实现相互通信的一种方法,通过这个方法方便的实现了一个或多个浏览器页面间的数据通信或者事件递交,进而可以方便的构建基于多浏览器页面协同工作的应用系统。
本发明的目的在于提出的浏览器不同页面间JavaScript函数相互通信的一种方法,是借助浏览器插件与操作系统进程间通信来完成,通信的发送端页面将接收端页面中的JavaScript函数名称和函数参数数据传递给其所在浏览器页面的浏览器插件;而发送端的浏览器插件再将这些数据打包成一个消息、并通过进程间通信将该消息发送给接收端的浏览器页面的浏览器插件;然后接收端的浏览器插件解析该消息,以得到指定的函数名和参数数据;并根据该函数名和参数数据由接收端插件来触发接收端浏览器页面的JavaScript函数的执行。上述方法实现了在一个浏览器页面触发另一个浏览器页面JavaScript方法的执行,即实现了事件递交;同时将数据作为事件参数进行传递,即实现了数据的传输。
本发明的一种浏览器页面间通信的方法,于该方法中:通信的发送端页面借助浏览器插件通过浏览器JavaScript引擎将数据从浏览器页面传递到通信的发送端页所在的浏览器程序进程;而通信的接收端页面借助浏览器插件通过浏览器JavaScript引擎实现接收端页面进程的获得的数据到浏览器页面JavaScript函数的调用映射;并且通信的发送端及接收端页面所在的浏览器程序进程之间是通过操作系统进程间通信进行数据传送。
其中:
发送端页面是将JavaScript函数名称和函数参数数据传递给其所在浏览器页面的该浏览器插件;并且发送端的该浏览器插件再将这些数据打包成一个消息。
该插件再通过操作系统进程间通信技术将该消息传递到接收端页面所在的浏览器程序进程中;然后接收端的浏览器插件解析该消息,以得到指定的数据;并根据该数据由接收端插件来触发接收端浏览器页面的JavaScript函数的执行。
该浏览器插件包含有发送端和接收端以及进程间通信模块,以实现各页面之间数据的相互递交;其中,浏览器插件的发送端负责从页面接收数据并将数据发送到另外一个浏览器页面的浏览器插件接收端;浏览器插件接收端负责接收发送端传来的消息并根据消息触发浏览器页面的JavaScript函数的执行。
该进程通信可为DBus、基于本地网络的Socket通信、进程间消息队列或共享内存的IPC通信。
其包含发送端步骤:
步骤(1),打开发送端页面,加载浏览器插件;
步骤(2), 发送端页面的浏览器插件与接收端页面的浏览器插件建立进程通信连接;
步骤(3),发送端页面调用浏览器插件发送端提供的JavaScript接口函数;将接收端页面定义好的JavaScript函数名称和函数参数数据作为发送端提供的JavaScript接口函数的参数进行调用;该调用将接收端的目标函数和目标函数的参数全部作为数据传递到发送端页面所在浏览器页面的浏览器插件;
步骤(4),发送端页面所在浏览器的浏览器插件接收到传来的数据后,将该数据打包成通信消息;
步骤(5),发送端页面所在浏览器页面的浏览器插件通过步骤(2)中建立的进程通信连接,将步骤(4)中的通信消息发送到接收端。
其还包含接收端步骤:
步骤(21),打开接收端页面,加载浏览器插件,并于该接收端页面中定义好被调用的JavaScript函数,以供发送端页面调用;
步骤(22),接收端页面的浏览器插件与发送端页面的浏览器插件建立进程通信连接;
步骤(23),页面等待JavaScript被调用;
步骤(24),接收到消息时,将消息解析成要调用的JavaScript函数名;并根据消息触发浏览器页面的JavaScript函数的执行。
于所述步骤(24)中首先包含一个判断步骤,判断接收端页面是否定义了该函数,如果结果是,则继续进行,如果是否,则返回步骤(23)。
于步骤(5)中,首先包含一个判断步骤,判断步骤(2)中建立的进程通信连接是否成功,如果成功则继续执行发送;否则不发送并退出。
该浏览器插件的发送端和接收端以及进程间通信模块可集成在同一个插件中,只要两个页面都加载该插件,便可实现不同页面之间程序的相互递交。插件的发送端负责从页面接收数据并将数据发送到另外一个浏览器页面的浏览器插件接收端;浏览器插件接收端负责接收发送端传来的消息并根据消息触发浏览器页面的JavaScript函数的执行。
本发明中将插件的接收端功能和发送端功能集成到同一插件程序中实现,也可以将在不同插件中分别实现接收端功能和发送端功能。
本发明提出的方法是基于事件模型,发送端和接收端不需要进行相互握手的请求和确认,所以本发明这种浏览器不同页面间的JavaScript函数间的事件递交和数据通信方法具有很高的效率以及实时性。
附图说明
图1为两个浏览器页面间通信的总体架构图;
图2为两个浏览器页面间Dbus通信的总体架构图;
图3为两个浏览器页面间Dbus通信的具体流程图。
具体实施方式
为了使本发明的特征及优点得到更清楚的了解,以下结合附图,作详细说明;
如图1所示,于本实施例中,该浏览器插件的发送端和接收端以及进程间通信模块集成在同一个插件中,只要两个页面都加载该插件,便可实现不同页面之间程序的相互递交。插件的发送端负责从页面接收数据并将数据发送到另外一个浏览器页面的浏览器插件接收端;浏览器插件接收端负责接收发送端传来的消息并根据消息触发浏览器页面的JavaScript函数的执行。
于本实施例中,是将插件的接收端功能和发送端功能集成到同一插件程序中实现,本领域技术员可以理解的是,也可以将其设在不同插件中甚至是不同浏览器的不同插件中,分别实现接收端功能和发送端功能。由于其原理于本实施例相同,在此不予赘述。
以下以进程间通信应用DBus通信实来现进程间通信为例说明。详细说明如下:
如图2所示,描述了本发明的浏览器页面通信的流程图。
对发明专利实施方案的要求具体步骤如下所述:
1、发送端步骤:
1)步骤(S0),在浏览器中打开发送端页面(即页面1),加载通信插件(S1);
2)步骤(S1),插件加载并初始化,注册DBus通信后台服务(S2),并获得后台服务地址(add1),并根据发送端页面参数向DBus管理服务程序获取接收端浏览器页面所指定的DBus通信接收端后台服务地址,即页面2的Dbus通信服务地址add2;
3)步骤(S3),插件加载成功后,便可在页面1(发送端页面)的发送端调用发送端插件提供的JavaScript接口函数invokeJS();将接收端页面定义好的JavaScript函数(函数形式如:function(para1,para2,......))的函数名(如:function)和函数参数(如:para1,para2,......)作为invokeJS()函数的参数进行调用(调用形式如:invokeJS(“function”,para1,para2,......));该调用将接收端的目标函数的函数名作为字符串类型的参数,将目标函数的参数全部保持原参数类型作为数据传递到页面1所在浏览器页面的插件;
4)步骤S4,页面1所在浏览器页面的插件接收到页面1传来的数据后,将数据打包成DBus消息;
5)步骤5,页面1所在浏览器页面的插件根据步骤2中指定的DBus接收端后台服务地址add2判断接收端页面(页面2)是否开启了DBus服务;如果开启则发送步骤4打包的消息(即执行步骤S7);如果没有开启则JavaScript调用结束(即执行步骤S6)。
2、接收端步骤:
1)在一浏览器中打开另一页面(即页面2),并加载通信插件;该接收端浏览器页面(页面2)中定义好被调用的JavaScript函数(如:function(para1,para2......)),供发送端页面调用;
2)插件加载并初始化,向DBus管理服务程序注册DBus通信后台服务地址,即页面2的Dbus通信服务地址add2;
3)页面等待JavaScript被调用;
4)如果插件DBus通信后台服务接收到消息(步骤S8)(如消息:“function”,para1,para2……),则将消息解析成要调用的JavaScript函数名(如:function)和参数数据(如:para1,para2......)(步骤S9);插件通过JavaScript引擎,在页面2中调用解析出的JavaScript函数(如:function(para1,para2......))(步骤S11);
另外,还可于步骤S9后面增加一个判断步骤(S10),判断页面2是否定义了函数function,如果结果是,则根据函数function执行相对应的操作,然后返回执行步骤S8继续等待信息;如果是否,则返回执行步骤S8继续等待信息。
于本具体实施例中,是以其中一个页面(发送端页面)与另一个页面(接收端页面)通信的步骤为例说明的,当然任意页面之间可互为发送与接收端,均可以通过同一或不同的插件相互通信。本发明具有通用性,可以用于实现Linux系统下相同浏览器不同页面的、不同浏览器不同页面间的通信
上述描述的实施过程,是应用了DBus作为进程间通信的方法,通过DBus地址机制实现发送端和接收端的相互通信。但本发明不限于使用DBus实现进程间通信,本领域技术人员可以理解的是:也可通过基于本地网络的Socket通信,进程间消息队列、共享内存的IPC通信,或其它通信方式实现的进程间通信,来替代本发明的DBus通信的实现方法,其均在本发明保护的范围之内。
Claims (9)
1.一种浏览器页面间通信的方法,其特征在于,于该方法中:
通信的发送端页面借助浏览器插件通过浏览器JavaScript引擎将数据从浏览器页面传递到通信的发送端页所在的浏览器程序进程;
而通信的接收端页面借助浏览器插件通过浏览器JavaScript引擎实现接收 端页面进程的获得的数据到浏览器页面JavaScript函数的调用映射;
并且通信的发送端及接收端页面所在的浏览器程序进程之间是通过操作系统进程间通信进行数据传送;
其中,浏览器插件的接收端功能和发送端功能是集成到同一插件程序中,或在不同插件中分别实现接收端功能和发送端的功能。
2.如权利要求1所述的浏览器页面间通信的方法,其特征在于,发送端页面是将JavaScript函数名称和函数参数数据传递给其所在浏览器页面的该浏览器插件;并且发送端的该浏览器插件再将这些数据打包成一个消息。
3.如权利要求2所述的浏览器页面间通信的方法,其特征在于,该插件再通过操作系统进程间通信技术将该消息传递到接收端页面所在的浏览器程序进程中;然后接收端的浏览器插件解析该消息,以得到指定的数据;并根据该数据由接收端插件来触发接收端浏览器页面的JavaScript函数的执行。
4.如权利要求3所述的浏览器页面间通信的方法,其特征在于,
该浏览器插件包含有发送端和接收端以及进程间通信模块,以实现各页面之间数据的相互递交;其中,浏览器插件的发送端负责从页面接收数据并将数据发送到另外一个浏览器页面的浏览器插件接收端;浏览器插件接收端负责接收发送端传来的消息并根据消息触发浏览器页面的JavaScript函数的执行。
5.如权利要求1-4任一权利要求所述的浏览器页面间通信的方法,其特征在于,该进程通信为DBus、基于本地网络的Socket通信、进程间消息队列或共享内存的IPC通信。
6.如权利要求4所述的浏览器页面间通信的方法,其特征在于,其包含发送端步骤:
步骤(1),打开发送端页面,加载浏览器插件;
步骤(2), 发送端页面的浏览器插件与接收端页面的浏览器插件建立进程通信连接;
步骤(3),发送端页面的调用浏览器插件发送端提供的JavaScript接口函数;将接收端页面定义好的JavaScript函数名称和函数参数数据作为发送端提供的JavaScript接口函数和参数进行调用;该调用将接收端的目标函数和目标函数的参数全部作为数据传递到发送端页面所在浏览器页面的浏览器插件;
步骤(4),发送端页面所在浏览器页面的浏览器插件接收到传来的数据后,将该数据打包成通信消息;
步骤(5),发送端页面所在浏览器页面的浏览器插件通过步骤(2)中建立的进程通信连接,将步骤(4)中的通信消息发送到接收端。
7.如权利要求6所述的浏览器页面间通信的方法,其特征在于,其还包含接收端步骤:
步骤(21),打开接收端页面,加载浏览器插件,并于该接收端页面中定义好被调用的JavaScript函数,以供发送端页面调用;
步骤(22),接收端页面的浏览器插件与发送端页面的浏览器插件建立进程通信连接;
步骤(23),页面等待JavaScript被调用;
步骤(24),接收到消息时,将消息解析成要调用的JavaScript函数名;并根据消息触发浏览器页面的JavaScript函数的执行。
8.如权利要求7所述的浏览器页面间通信的方法,其特征在于,于所述步骤(24)中首先包含一个判断步骤,判断接收端页面是否定义了该函数,如果结果是,则继续进行,如果是否,则返回步骤(23)。
9.如权利要求6所述的浏览器页面间通信的方法,其特征在于,于步骤(5)中,首先包含一个判断步骤,判断步骤(2)中建立的进程通信连接是否成功,如果成功则继续执行发送;否则不发送并退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110449883.0A CN102567125B (zh) | 2011-12-28 | 2011-12-28 | 一种浏览器页面间通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110449883.0A CN102567125B (zh) | 2011-12-28 | 2011-12-28 | 一种浏览器页面间通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567125A CN102567125A (zh) | 2012-07-11 |
CN102567125B true CN102567125B (zh) | 2014-11-05 |
Family
ID=46412610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110449883.0A Active CN102567125B (zh) | 2011-12-28 | 2011-12-28 | 一种浏览器页面间通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567125B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853621B (zh) * | 2012-12-05 | 2017-10-24 | 腾讯科技(深圳)有限公司 | 一种跨进程交互方法及相关终端设备 |
CN103064886B (zh) * | 2012-12-07 | 2016-02-10 | 百度在线网络技术(北京)有限公司 | 支持多浏览器的方法及插件 |
CN103064747A (zh) * | 2012-12-13 | 2013-04-24 | 郑州威科姆科技股份有限公司 | Wes7环境中不同web窗口页面间的通信方法 |
WO2014101159A1 (zh) * | 2012-12-31 | 2014-07-03 | 华为技术有限公司 | 设置、处理交互式连接建立ice地址的方法、装置和服务器 |
CN109656666A (zh) * | 2013-01-05 | 2019-04-19 | 韦秀方 | 一种在浏览器中显示普通桌面程序的方法 |
CN103064738B (zh) * | 2013-01-15 | 2016-11-02 | 珠海金山办公软件有限公司 | Linux下本地应用程序窗体嵌入浏览器的方法及系统 |
CN104298494A (zh) * | 2013-07-19 | 2015-01-21 | 深圳市同洲电子股份有限公司 | 一种基于js框架的浏览方法及浏览装置 |
CN104346228B (zh) * | 2013-07-26 | 2017-12-05 | 华为终端有限公司 | 共享应用程序的方法及终端 |
CN103645849A (zh) * | 2013-12-20 | 2014-03-19 | 广东威创视讯科技股份有限公司 | 一种对浏览器页面操作的处理方法 |
CN104410722A (zh) * | 2014-12-19 | 2015-03-11 | 上海斐讯数据通信技术有限公司 | 一种Web页面窗口对象的通信方法及系统 |
CN106933856B (zh) * | 2015-12-30 | 2020-02-07 | 北京国双科技有限公司 | 网页更新请求的生成方法和装置 |
CN107547944A (zh) * | 2016-06-27 | 2018-01-05 | 中兴通讯股份有限公司 | 接口实现方法及装置、机顶盒 |
CN106202244B (zh) * | 2016-06-28 | 2020-01-21 | 深圳中兴网信科技有限公司 | 网页消息返回方法和网页消息返回系统 |
CN107491330B (zh) * | 2017-08-08 | 2020-04-03 | 中国科学院声学研究所 | 一种提高嵌入式浏览器运行速度的方法 |
CN108804243B (zh) * | 2018-05-23 | 2022-11-25 | 北京五八信息技术有限公司 | 一种交互方法、装置、计算机设备及计算机可读存储介质 |
CN109343975B (zh) * | 2018-09-21 | 2022-11-11 | 百度在线网络技术(北京)有限公司 | 用于页面间异步通信的方法和装置 |
CN115017437A (zh) * | 2021-07-23 | 2022-09-06 | 北京字跳网络技术有限公司 | 信息展示方法、装置、终端和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794284A (zh) * | 2009-02-03 | 2010-08-04 | 上海东方宽频传播有限公司 | 在浏览器中网页淡入淡出的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743334B2 (en) * | 2006-03-02 | 2010-06-22 | Microsoft Corporation | Dynamically configuring a web page |
-
2011
- 2011-12-28 CN CN201110449883.0A patent/CN102567125B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794284A (zh) * | 2009-02-03 | 2010-08-04 | 上海东方宽频传播有限公司 | 在浏览器中网页淡入淡出的实现方法 |
Non-Patent Citations (2)
Title |
---|
jelink.使用javascript做页面间传值.《http://blog.csdn.net/jelink/article/details/1306685》.2006,全文. * |
使用javascript做页面间传值;jelink;《http://blog.csdn.net/jelink/article/details/1306685》;20060929;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN102567125A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567125B (zh) | 一种浏览器页面间通信的方法 | |
CN103220292B (zh) | 跨安全区数据传输方法和系统 | |
CN102377814B (zh) | 针对嵌入式操作系统的远程协助服务方法 | |
CN102804687B (zh) | 使用超文本传输协议作为双向数据流的传输的方法和系统 | |
CN101957808B (zh) | 多cpu间的通信方法、系统及cpu | |
CN102946376B (zh) | 一种异步通讯的实现方法 | |
CN101335758B (zh) | 双处理器终端访问sim卡中服务的方法及系统 | |
CN105939291B (zh) | 报文处理方法和网络设备 | |
CN102546778B (zh) | 基于代理跨平台的无线网络接入控制器板间通信方法 | |
CN103108037B (zh) | 一种通信方法,Web服务器及Web通信系统 | |
CN103516673A (zh) | 一种网络数据通信方法、系统及客户端和服务器 | |
CN105159256A (zh) | 一种基于Web服务的智能家居控制系统 | |
CN103309877A (zh) | 跨域通讯及全双工通讯的方法、装置 | |
CN104243281A (zh) | 基于移动互联网的语音通信方法 | |
CN102546542B (zh) | 电子系统及其嵌入式设备和中转设备 | |
CN106341453A (zh) | 一种基于html5的高速虚拟桌面代理构建方法与系统 | |
CA2547204A1 (en) | Inter-processor parameter management in a multiple-processor wireless mobile communication device operating on a processor specific communication network | |
CN107426299A (zh) | 实现共享助动车系统服务器tcp长连接和高并发方法 | |
JP5931224B2 (ja) | データ・アクセス方法及び装置 | |
CN103346961B (zh) | 一种数据打包交换的方法和系统 | |
CN109067861A (zh) | 基于物联网的通信方法、装置、设备和介质 | |
CN109308210A (zh) | 一种在多核服务器上优化nfv转发服务链性能的方法 | |
CN210274135U (zh) | 一种远程连接系统 | |
CN104508632B (zh) | 一种数据转发方法、装置及系统 | |
CN102325187A (zh) | 一种整合多种功能服务的系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |