浏览器与web前端通信的方法、web前端及系统的制作方法_2

文档序号:9810263阅读:来源:国知局
时,会触发一个事件,如前所述,浏览器会及时捕获到这个事件。
[0058]在浏览器侧,浏览器客户端102会捕获iframe标签的src属性格式及src属性值,并对src属性格式及src属性值进行判断,判断src属性格式是否为约定的格式,src属性值是否产生变化。
[0059]然后,根据所述iframe标签的src属性格式及src属性值,获取全局变量命令队列。
[0060]浏览器客户端102在接收到所述全局变量命令队列后,调用全局的队列获取函数(getQueue),从所述全局变量命令队列中读取所述请求事件,以及请求事件的id、类型和命令参数。
[0061]然后,根据所述请求事件的id、类型和命令参数对所述请求事件进行相应处理。
[0062]浏览器客户端102处理完成一条命令后,若处理成功,浏览器调用一个全局的成功处理函数(sucCallback),将处理结果、所述请求事件的命令参数及id传入所述web前端101。
[0063]当处理失败后,所述浏览器调用全局的失败处理函数(errCallback),将处理结果、所述请求事件的命令参数及id传入所述web前端101。
[0064]由此,通过上述三个全局函数getQueue, sucCallback和errCallback(全局的队列获取函数、全局的成功处理函数以及全局的失败处理函数),可以使对外API的回调函数保留现场,因为整个系统只需维护三个全局函数getQueue, sucCallback和errCallback,而后续web前端101执行命令后的成功和失败回调函数不需要是全局的函数,且会保留该回调函数的现场。
[0065]本实施例通过上述方案,通过创建的iframe标签,在web前端101和浏览器客户端102之间建立一座通信的桥梁,通过该桥梁,web前端101可以主动和浏览器客户端102通信,浏览器客户端102也可以主动和web前端101通信且保留函数现场,由此实现了 web前端101与浏览器客户端102之间的有效通信。
[0066]此外,在具体实现时,通过提供一个基本的javascript组件来封装上述的web前端101和浏览器客户端102间的通信方式和命令调用的队列维护机制,对外提供一个定制的API。开发用户只需通过引入这个轻量级的组件即可使用API,而不用关心内部实现,且没有任何潜规则,从而降低了开发用户学习使用API的成本。
[0067]进一步地,所述web前端101,还用于根据所述浏览器对所述请求事件的处理结果,进行相应操作。
[0068]具体地,在本实施例中,web前端101根据接口调用指令,获取请求事件的接口参数中还包括:请求事件的成功回调函数和失败回调函数。
[0069]其中,web前端101会将获取到的请求事件的id作为key值,将请求事件的成功回调函数和失败回调函数作为value值存入一匹配对象中。
[0070]之后,web前端101根据浏览器对请求事件的处理结果,进行相应操作时,具体采用以下方案:
[0071]在浏览器对请求事件处理成功后,web前端101根据请求事件的id,从所述匹配对象中找到对应的成功回调函数,并执行;在所述浏览器对所述请求事件处理失败后,所述web前端101根据请求事件的id,从所述匹配对象中找到对应的失败回调函数,并执行。
[0072]以下详细阐述浏览器客户端102处理请求,以及web前端101获得浏览器客户端102响应后进行相应操作的具体过程:
[0073]浏览器客户端102在接收到全局变量命令队列后,调用全局的队列获取函数(getQueue),从全局变量命令队列中读取请求事件,以及请求事件的id、类型和命令参数。
[0074]然后,根据请求事件的id、类型和命令参数对请求事件进行相应处理。
[0075]浏览器客户端102处理完成一条命令后,若处理成功,浏览器调用一个全局的成功处理函数(sucCallback),将处理结果、请求事件的命令参数及id传入web前端101。web前端101根据接收到的id从匹配对象中找到对应的成功回调函数,并执行。
[0076]当浏览器处理请求事件失败后,浏览器调用全局的失败处理函数(errCallback),将处理结果、所述请求事件的命令参数及id传入所述web前端101。web前端101根据接收到的id从匹配对象中找到对应的失败回调函数,并执行。
[0077]通过这种方法,整个系统只需维护三个全局函数getQueue, sucCallback和errCallback,而web前端101执行命令后的成功和失败回调函数不需要是全局的函数,且会保留该回调函数的现场。
[0078]进一步地,所述web前端101,还用于判断是否创建有用于通信的iframe标签;若是,则通过给预先创建的标签的设定属性赋值的方式,将所述全局变量命令队列发送至浏览器;否则创建所述iframe标签。
[0079]web前端101通过判断,若当前没有创建用于通信的iframe标签,则创建该iframe标签,若当前有创建用于通信的iframe标签,则通过给预先创建的标签的设定属性赋值的方式,将全局变量命令队列发送至浏览器。
[0080]本实施例通过上方案,通过创建iframe标签,在web前端101和浏览器客户端102之间建立一座通信的桥梁,通过该桥梁,web前端101可以主动和浏览器客户端102通信,浏览器客户端102也可以主动和web前端101通信且保留函数现场,由此实现了 web前端101与浏览器客户端102之间的有效通信,降低了开发者学习使用API的成本。
[0081]如图3所示,图3是本发明实施例方案涉及的web前端硬件运行环境示意图,该web前端可以为PC,也可以其它服务器。
[0082]如图3所示,该web前端可以包括:处理器1001,例如CPU,网络接口 1004,用户接口 1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口 1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口 1003还可以包括标准的有线接口、无线接口。网络接口 1004可选的可以包括标准的有线接口、无线接口(如W1-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。如图3所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及通信应用程序。
[0083]在图3所示的web前端中,网络接口 1004主要用于连接浏览器客户端,与浏览器客户端进行数据通信;用户接口 1003主要用于与开发用户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的通信应用程序,并执行以下操作:
[0084]响应接口调用指令,生成一 id用以标识所述接口调用指令对应的请求事件;
[0085]根据所述接口调用指令,获取所述请求事件的接口参数;
[0086]将所述请求事件、id以及所述接口参数存入全局变量命令队列中;
[0087]通过给预先创建的标签的设定属性赋值的方式,将所述全局变量命令队列发送至浏览器;由所述浏览器接收到所述全局变量命令队列后,从所述全局变量命令队列中读取所述请求事件、id以及所述接口参数,对所述请求事件进行处理。
[0088]进一步地,在一个实施例中,处理器1001调用存储器1005中存储的通信应用程序可以执行以下操作:
[0089]以预定格式,给所述iframe标签的src属性赋值,以触发全局变量命令队列的发送;所述src属性包括用于标识所述请求事件的类型的service字段和act1n字段。
[0090]进一步地,在一个实施例中,处理器1001调用存储器1005中存储的通信应用程序可以执行以下操作:
[0091]根据所述浏览器对所述请求事件的处理结果,进行相应操作。
[0092]进一步地,在一个实施例中,处理器1001调用存储器1005中存储的通信应用程序可以执行以下操作:
[0093]在根据所述接口调用指令,获取所述请求事件的接口参数之后还包括:
[0094]将所述id作为key值,将所述接口参数中的成功回调函数和失败回调函数作为value值存入一匹配对象中;
[0095]在所述浏览器对所述请求事件处理成功后,根据所述id,从所述匹配对象中找到对应的成功回调函数,并执行;
[0096]在所述浏览器对所述请求事件处理失败后,根据所述id,从所述匹配对象中找到对应的失败回调函数,并执行。
[0097]进一步地,在一个实施例中,处理器1001调用存储器1005中存储的通信应用程序可以执行以下操作:
[0098]判断是否创建有用于通信的iframe标签;若是,则通过给预先创建的标签的设定属性赋值的方式,将所述全局变量命令队列发送至浏览器;否则创建所述iframe标签。
[0099]本实施例通过上述方案,通过创建iframe标签,在web前端和浏览器客户端之间建立一座通信的桥梁,通过该桥梁,web前端可以主动和浏览器客户端通信,浏览器客户端也可以主动和web前端通信且保留函数现场,由此实现了 web前端与浏览器客户端之间的有效通信,降低了开发者学习使用API的成本。
[0100]基于上述系统架构及硬件架构,提出本发明浏览器与web前端通信的方法实施例。
[0101]如图4所示,本发明第一实施例提出一种浏览器与web前端通信的方法,具体涉及浏览器客户端与web前端通信的方法,该方法包括:
[0102]步骤S101,web前端响应接口调用指令,生成用以标识所述接口调用指令对应请求事件的id ;
[0103]本实施例浏览器客户端可以为PC客户端,也可以为手机、平板电脑等具有网页浏览功能的移动终端。
[0104]以1s系统的手机端为例,由于现有的运行于1s系统之上的浏览器都是基于safari内核,web前端无法直接使用浏览器客户端提供的API,即web前端缺少与浏览器客户端主动通信的机制。而对于浏览器客户端,虽然可以访问web前端的全局javascript代码,但是无法保留函数现场,给web前端开发带来更大的复杂度。
[0105]本实施例方案可以在web前端和浏览器客户端之间建立一座通信的桥梁,通过该桥梁,web前端可以主动和浏览器客户端通信,浏览器客户端也可以主动和web前端通信且保留函数现场,实现web前端与浏览器客户端之间的有效通信,降低开发者学习使用API的成本。
[0106]具体地,在web前端创建有一个标签,本实施例以一个隐藏的iframe标签进行举例。web前端在给这个iframe标签的src属性赋值时,会触发一个事件,而浏览器客户端会及时捕获到这个事件,与此同时,浏览器还会截获iframe标签的src信息。
[0107]因此,基于此原理,通过创建一个隐藏的iframe的方式可以建立起web前端和浏览器客户端之间通信的桥梁。由于web前端每次创建iframe标签并赋值时都会触发一个事件,所以为了区分创建iframe标签是普通的行为还是传递一个命令,本实施例定义了 src的特殊格式,并且该src的格式由web前端与浏览器客户端协商产生,以便浏览器客户端可以及时捕获到src属性值。
[0108
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1