掌桥专利:专业的专利平台
掌桥专利
首页

一种页面通信的方法及装置

文献发布时间:2023-06-19 12:10:19


一种页面通信的方法及装置

技术领域

本公开涉及计算机技术领域,特别涉及一种页面通信的方法及装置。

背景技术

Iframe是一种超级文本标记语言(HyperText Markup Language,HTML)标签,通过iframe可以在一个页面中嵌入另一个页面,作为一个页面中的展示区域。可选的,在达到预设的限制条件时,具有不同域名的页面也可以相互嵌套。例如,在站点A的页面中通过iframe可以嵌入站点B的页面,那么,站点B的页面称为iframe页面(也称为子页面),站点A的页面即为该iframe页面对应的父页面。在站点A的父页面中,可以向站点B发起跨域调用。

已有技术下,在进行父页面和子页面进行相互通信时,通常采用异步消息投放函数(postMessage)应用程序编程接口(Application Programming Interface,API)进行通信。

然而,由于postMessage是将需要发送的消息放入队列后就立刻返回,然后继续执行下一步任务,而不管其他程序是否对上述消息进行处理,因此,当父页面向子页面发起业务后,基于postMessage API进行父页面和子页面的通信,需要立即启动监听模式,即,需要立即设置专门用于监听的服务器,监听在接收到postMessage的返回值后的所有数据,然后,对所述数据进行筛选,从中筛选出匹配的数据,由于监听到的所有数据中,存在匹配的数据,也存在大量的无关数据,单纯基于postMessage API进行通信,会大大降低了数据进行页面通信的效率,同时,由于iframe的页面不能及时感知通信对方的异常情况,存在安全风险。

因此,需要设计一种新的方法,以解决上述问题。

发明内容

本公开实施例提供一种页面通信的方法及装置,用于解决已有技术下页面通信效率低下且不能及时感知通信对方的异常情况的问题。

本公开实施例提供的具体技术方案如下:

第一方面,一种页面通信的方法,包括:

确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道;

响应于在所述第一页面中针对待呈现业务触发的业务请求,生成所述业务请求对应的加载请求消息,并通过所述通信通道,将所述加载请求消息发往所述第二页面,以使所述第二页面基于所述加载请求消息加载所述待呈现业务的业务数据,其中,所述加载请求消息中至少包含所述待呈现业务的业务标识和加载消息属性标识;

确定所述第二页面返回的加载响应消息携带所述加载消息属性标识时,通过所述通信通道,获取所述第二页面加载的所述待呈现业务的业务数据。

可选的,所述确定满足预设的触发条件时,包括:

接收到在所述第一页面中触发的针对所述第二页面的通信请求时,确定满足预设的触发条件;或者,

接收到预设线程触发的通信请求时,确定满足预设的触发条件。

可选的,所述第一页面为父页面,所述第二页面为子页面;

或者,

所述第一页面为子页面,所述第二页面为父页面。

可选的,所述确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道,包括:

确定满足预设的触发条件时,循环执行如下操作,直至确定接收到所述第二页面返回的创建响应消息携带创建消息属性标识为止:

生成用于在所述第一页面和所述第二页面之间建立通信通道的创建通道消息,其中,所述创建通道消息中至少包含创建消息属性标识;

通过异步消息投放函数postmessage应用程序编程接口API,将所述创建通道消息发往所述第二页面;

判断是否接收到携带所述创建消息属性标识的创建响应消息;

基于接收的所述携带所述创建消息属性标识的创建响应消息,确定所述第一页面和所述第二页面之间的通信通道建立完成。

可选的,还包括:

在接收到所述创建响应消息之后,查找所述创建响应消息的来源origin属性,并基于所述origin属性,确定所述创建响应消息是所述第二页面返回的。

可选的,所述判断是否接收到携带所述创建消息属性标识的创建响应消息,还包括:

若确定未接收到携带所述创建消息属性标识的创建响应消息,并且针对接收创建响应消息设置的定时器已超时,以及确定判断次数未达到设定阈值,则对所述创建消息属性标识进行更新。

可选的,所述判断是否接收到携带所述创建消息属性标识的创建响应消息,还包括:

若确定未接收到所述携带所述创建消息属性标识的创建响应消息,且确定判断次数已达到所述设定阈值,则确定所述第一页面和所述第二页面之间的通信通道建立失败。

可选的,在确定所述第二页面返回的加载响应消息携带所述加载消息属性标识和所述通道属性标识时,通过所述通信通道,获取所述第二页面加载的所述待呈现业务的业务数据之后,还包括:

将所述待呈现业务的业务数据展示在所述第一页面中;或者,

将所述待呈现业务的业务数据展示在所述第一页面中,并将所述业务数据反馈至服务器。

可选的,还包括:

在接收到所述加载响应消息之后,获得所述加载响应消息的origin属性;

基于所述origin属性,确定所述加载响应消息是所述第二页面返回的。

可选的,若在所述第一页面中针对多个待呈现业务触发了相应的多个业务请求,则响应于在所述第一页面中针对待呈现业务触发的业务请求,生成所述业务请求对应的加载请求消息,并通过所述通信通道,将所述加载请求消息发往所述第二页面,包括:

响应于在所述第一页面中针对多个待呈现业务触发的相应的业务请求,对应生成所述多个业务请求各自的加载请求消息,其中,每个加载请求消息中至少包含相应的待呈现业务的业务标识和相应的加载消息属性标识;

基于所述多个加载请求消息,构建消息集合,以及分别通过所述通信通道,将所述多个加载请求消息发往多个第二页面,以使所述多个第二页面分别基于各自对应的加载请求消息加载对应的待呈现业务的业务数据;

每接收到一个第二页面返回的加载响应消息,基于所述加载响应消息携带的加载消息属性标识,从所述消息集合中移除相应的加载请求消息;

确定所述消息集合中的多个加载请求消息均被移除时,释放所述消息集合占用的空间。

可选的,所述每个加载响应消息携带的加载消息属性标识是针对相应的待呈现业务唯一设置且固定不变的。

第二方面,一种页面通信的装置,包括:

确定单元,用于确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道;

响应单元,用于响应于在所述第一页面中针对待呈现业务触发的业务请求,生成所述业务请求对应的加载请求消息,并通过所述通信通道,将所述加载请求消息发往所述第二页面,以使所述第二页面基于所述加载请求消息加载所述待呈现业务的业务数据,其中,所述加载请求消息中至少包含所述待呈现业务的业务标识和加载消息属性标识;

获取单元,用于确定所述第二页面返回的加载响应消息携带所述加载消息属性标识时,通过所述通信通道,获取所述第二页面加载的所述待呈现业务的业务数据。

可选的,所述确定满足预设的触发条件时,所述确定单元用于:

接收到在所述第一页面中触发的针对所述第二页面的通信请求时,确定满足预设的触发条件;或者,

接收到预设线程触发的通信请求时,确定满足预设的触发条件。

可选的,所述第一页面为父页面,所述第二页面为子页面;

或者,

所述第一页面为子页面,所述第二页面为父页面。

可选的,所述确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道,所述确定单元用于:

确定满足预设的触发条件时,循环执行如下操作,直至确定接收到所述第二页面返回的创建响应消息携带创建消息属性标识为止:

生成用于在所述第一页面和所述第二页面之间建立通信通道的创建通道消息,其中,所述创建通道消息中至少包含创建消息属性标识;

通过异步消息投放函数postmessage应用程序编程接口API,将所述创建通道消息发往所述第二页面;

判断是否接收到携带所述创建消息属性标识的创建响应消息;

基于接收的所述携带所述创建消息属性标识的创建响应消息,确定所述第一页面和所述第二页面之间的通信通道建立完成。

可选的,所述确定单元还用于:

在接收到所述创建响应消息之后,查找所述创建响应消息的来源origin属性,并基于所述origin属性,确定所述创建响应消息是所述第二页面返回的。

可选的,所述判断是否接收到携带所述创建消息属性标识的创建响应消息,所述确定单元还用于:

若确定未接收到携带所述创建消息属性标识的创建响应消息,并且针对接收创建响应消息设置的定时器已超时,以及确定判断次数未达到设定阈值,则对所述创建消息属性标识进行更新。

可选的,所述判断是否接收到携带所述创建消息属性标识的创建响应消息,所述确定单元还用于:

若确定未接收到所述携带所述创建消息属性标识的创建响应消息,且确定判断次数已达到所述设定阈值,则确定所述第一页面和所述第二页面之间的通信通道建立失败。

可选的,在确定所述第二页面返回的加载响应消息携带所述加载消息属性标识和所述通道属性标识时,通过所述通信通道,获取所述第二页面加载的所述待呈现业务的业务数据之后,所述获取单元还用于:

将所述待呈现业务的业务数据展示在所述第一页面中;或者,

将所述待呈现业务的业务数据展示在所述第一页面中,并将所述业务数据反馈至服务器。

可选的,所述获取单元还用于:

在接收到所述加载响应消息之后,获得所述加载响应消息的origin属性;

基于所述origin属性,确定所述加载响应消息是所述第二页面返回的。

可选的,若在所述第一页面中针对多个待呈现业务触发了相应的多个业务请求,则响应于在所述第一页面中针对待呈现业务触发的业务请求,生成所述业务请求对应的加载请求消息,并待呈现业务通过所述通信通道,将所述加载请求消息发往所述第二页面,所述第二响应单元用于:

响应于在所述第一页面中针对多个待呈现业务触发的相应的业务请求,对应生成所述多个业务请求各自的加载请求消息,其中,每个加载请求消息中至少包含相应的待呈现业务的业务标识和相应的加载消息属性标识;

基于所述多个加载请求消息,构建消息集合,以及分别通过所述通信通道,将所述多个加载请求消息发往多个第二页面,以使所述多个第二页面分别基于各自对应的加载请求消息加载对应的待呈现业务的业务数据;

每接收到一个第二页面返回的加载响应消息,基于所述加载响应消息携带的加载消息属性标识,从所述消息集合中移除相应的加载请求消息;

确定所述消息集合中的多个加载请求消息均被移除时,释放所述消息集合占用的空间。

可选的,所述每个加载响应消息携带的加载消息属性标识是针对相应的待呈现业务唯一设置且固定不变的。

第三方面,一种计算机装置,包括:

存储器,用于存储可执行指令;

处理器,用于读取并执行所述存储器中存储的可执行指令,以实现上述第一方面中任一项所述的方法。

第四方面,一种计算机可读存储介质,当所述计算机可读存储介质中的指令由处理器执行时,使得所述处理器能够执行上述第一方面中任一项所述的方法。

第五方面,一种计算机程序产品,包含可执行指令,当所述计算机程序产品的可执行指令由处理器执行时,能够实现上述第一方面中任一项所述的方法。

本公开实施例中,终端设备确定满足预设的触发条件,在第一页面和第二页面之间建立通信通道,再基于通信通道,响应于在第一页面中针对待呈现业务触发的业务请求,生成业务请求对应的加载请求消息,并将加载请求消息发往第二页面,当确定接收到第二页面返回的携带加载消息属性标识的加载响应消息后,通过通信通道,获取第二页面加载的待呈现业务的业务数据,其中,加载请求消息中至少包含加载消息属性标识,这样,终端设备通过为第一页面和第二页面建立通信通道,可以提高页面通信效率,也可以使第一页面或/和第二页面及时感知到对方的异常情况,保障iframe技术的安全通信;然后,响应于在第一页面中针对待呈现业务触发的业务请求,为对应该业务请求生成的加载请求消息,配置对应的加载消息属性标识,可以在将该加载请求消息发送到第二页面后,不必专门配置相应的监听服务器或装置,从而不仅增强了页面通信的安全性,也优化了网络架构,节约了网络资源。

附图说明

图1为本公开实施例中页面通信系统架构示意图;

图2A为本公开实施例中终端设备进行页面通信的流程示意图;

图2B为本公开实施例中应用场景一的流程示意图;

图3为本公开实施例中一种建立页面通信通道的流程示意图;

图4为本公开实施例中建立页面通信通道的一种应用场景的示意图;

图5为本公开实施例中建立页面通信通道的一种应用场景的示意图;

图6为本公开实施例中应用场景二的示意图;

图7为本公开实施例中实现页面通信的一种应用场景的示意图;

图8为本公开实施例中实现页面通信的一种应用场景的示意图;

图9为本公开实施例中计算机装置的逻辑架构示意图;

图10为本公开实施例中计算机装置的实体架构示意图。

具体实施方式

为了解决已有技术下页面通信效率低下且不能及时感知通信对方的异常情况的问题,本公开实施例中,终端设备确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道,再复用通信通道,通过响应在第一页面中针对待呈现业务触发的业务请求,生成业务请求对应的加载请求消息,并将加载请求消息发往第二页面,当确定接收到第二页面返回的携带加载消息属性标识的加载响应消息后,获取第二页面加载的待呈现业务的业务数据;这样,终端设备可以及时感知第二页面的异常情况,再基于加载消息属性标识,可以提高页面通信的效率。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

以下,对本公开实施例中的部分用语进行解释说明,以便于本领域技术人员理解。

(1)本公开实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

(2)本公开实施例中术语“iframe”为一种超文本标记语言(HTML)上的标签,运行在浏览器上,实现在一个页面之中嵌入另一个页面。

(3)本公开实施例中术语“HTML”文件,为网页内容描述文件,利用HTML语言描述网页内容。

(4)本公开实施例中术语“ison”为轻量级的文本数据交换格式,是JavaScript对象表示法。

(5)本公开实施例中术语“JavaScript代码”为加载网页的脚本语言代码,简称JS代码,JavaScript代码通过插入到HTML中执行,通过JavaScript可以实现HTML元素内容的输出,对事件作出反应,改变HTML内容、图像、样式、验证输入等功能,基本上网页上所有的交互都是通过JS函数实现的。

下面结合附图对本公开优选的实施方式做出进一步详细说明。

随着网页结构的复杂化,采用iframe技术在一个页面内嵌入另一个页面的应用场景越来越常见,随之出现了父页面和子页面之间的通信需求。

图1示出了本公开实施例中提供的一种页面通信的一种应用场景,参阅图1所示,终端设备100在浏览器的操作界面中,呈现了父页面101和若干个与父页面101进行页面通信的子页面102,其中,用户可以在父页面101中触发针对子页面102的页面通信。

参阅图2A所示,本公开实施例中,终端设备进行页面通信的具体流程如下:

步骤200:终端设备确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道。

本公开实施例中,终端设备确定满足预设的触发条件,可以采用但不限于一下两种方式:

方式1,终端设备接收到在第一页面中触发的针对第二页面的通信请求时,确定满足预设的触发条件。

具体实施中,参阅图1所示,若第一页面为父页面,第二页面为子页面,则终端设备接收到在父页面中触发的针对子页面的通信请求时,确定满足预设的触发条件;若第一页面为子页面,第二页面为父页面,则终端设备接收到在子页面中触发的针对父页面的通信请求时,确定满足预设的触发条件。这样,无论发起通信请求的发起方是父页面,还是子页面,都可以发起在父页面和子页面之间建立通信通道的线程,从而为父页面和子页面之间的通信请求建立可靠的通信通道。

方式2,终端设备接收到预设线程触发的通信请求时,确定满足预设的触发条件。

具体实施中,终端设备可以根据接收到的预设线程触发的通信请求,对应在第一页面和第二页面之间建立通信通道。

这样,在终端设备接收到满足预设的触发条件时,可以在第一页面和第二页面之间建立可靠的通信通道,从而可以满足第一页面和第二页面之间的安全的通信需求。

本公开实施例中,下文仅以终端设备接收到在父页面中触发的针对子页面的通信请求时,在第一页面和第二页面之间建立通信通道这一场景为例,对本技术方案展开介绍。针对终端设备接收到在子页面中触发的针对父页面的通信请求,在第一页面和第二页面之间建立通信通道;以及终端设备接收到预设线程触发的通信请求,在第一页面和第二页面之间建立通信通道的具体实施方式类似,在此不再赘述。

参阅图2B所示,终端设备可以在操作界面中的浏览器中呈现父页面,父页面中至少呈现有导航按钮,当用户点击导航按钮时,终端设备确定用户在第一页面中触发了针对第二页面的通信请求,则终端设备响应于该通信请求,在第一页面和第二页面之间建立通信通道。

可选的,参阅图3所示,本公开实施例中,终端设备可以采用如下步骤,在第一页面和第二页面之间建立通信通道:

步骤2001:终端设备接收到在第一页面中触发的针对第二页面的通信请求。

本公开实施例中,参阅图2B所示,终端设备接收到用户在父页面中点击的导航按钮,对应触发针对子页面的通信请求。

步骤2002:终端设备生成通信请求对应的创建通道消息,其中,创建通道消息中至少包含创建消息属性标识。

本公开实施例中,参阅图2B所示,终端设备根据用户在父页面触发的通信请求,对应生成至少携带创建消息属性标识的创建通道消息,其中,创建消息属性标识用于使终端设备验证子页面返回的创建响应消息。

可选的,创建通道消息可以是握手(handshake)类型的消息。

可选的,handshake类型的消息可以采用轻量级的数据交换格式(JavaScriptObject Notation,json)结构进行编制,可以是自定义的json结构中的type字段,且携带的创建消息属性标识可以是cid字段。

例如,参阅图4所示,以第一页面为父页面,第二页面为子页面为例。

假设终端设备接收到在父页面触发的针对子页面的通信请求。

那么,终端设备基于通信请求,生成对应的创建通道消息,且创建通道消息中至少包含创建消息属性标识。

又假设创建通道消息(handshake)采用json结构进行编制,对应json结构中的type字段,创建消息属性标识可以是cid字段,那么,对应的创建通道消息可以是:

步骤2003:终端设备通过postmessage API,将创建通道消息发往第二页面。

本公开实施例中,postmessage()方法允许来自不同源的脚本采用异步方式进行有效的通信,从而可以实现跨文本文档、多窗口、跨域消息传递,因此,终端设备可以将生成的创建通道消息通过postmessage API发往第二页面(如,子页面)。

步骤2004:终端设备针对接收创建响应消息设置启动器,并启动定时器。

本公开实施例中,终端设备将创建通道消息发往第二页面的同时,针对接收到创建响应消息设置定时器,并启动定时器,其中,定时器是为了降低终端设备的资源,防止程序瘫痪。这样,终端设备在第一页面和第二页面之间建立通信通道时,通过设置定时器,可以保证创建通信通道的线程正常运行,避免陷入死循环而导致程序瘫痪,以及网络资源的浪费。

步骤2005:终端设备判断是否接收到携带创建消息属性标识的创建响应消息,若是,则执行步骤2009,否则,执行步骤2006。

本公开实施例中,终端设备监听第二页面返回的创建响应消息,其中,创建响应消息中携带有创建消息属性标识。

可选的,终端设备通过判断是否接收到创建响应消息,若终端设备接收到创建响应消息,则进一步判断创建响应消息中是否携带有对应的创建通道消息中的创建消息属性标识,当确定接收到携带创建消息属性标识的创建响应消息时,执行步骤2009。相应的,若终端设备未接收到创建响应消息,则执行步骤2006。

可选的,终端设备在接收到创建响应消息之后,可以先查找创建响应消息的来源(origin)属性,然后,基于origin属性,确定创建响应消息是第二页面返回的,这样,可以通过验证该创建响应消息的来源,及时感知第二页面的异常情况,有效避免第二页面被意外重定向到伪造页面等不安全环境,从而保证第一页面和第二页面之间的通信安全。

例如,参阅图5所示,仍以第一页面为父页面,第二页面为子页面。

假设终端设备确定接收到携带有创建消息属性标识的创建响应消息,以及创建响应消息同样采用json结构进行编制。

那么,对应的,终端设备从postmessage API接收到的子页面返回的handshake-ack类型的创建响应消息,其中,创建响应消息中携带有创建消息属性标识,相应的创建响应消息可以是:

步骤2006:终端设备基于针对接收创建响应消息设置的启动器,判断定时器是否超时,若是,则执行步骤2007,否则,返回执行步骤2005。

本公开实施例中,终端设备监听第二页面返回的创建响应消息,若终端设备确定未接收到携带创建消息属性标识的创建响应消息,且针对接收创建响应消息设置的定时器已超时时,则执行步骤2007。

步骤2007:终端设备确定判断次数是否超过设定阈值,若是,则执行步骤2010,否则,执行步骤2008。

本公开实施例中,若终端设备确定未接收到携带创建消息属性标识的创建响应消息,且针对接收创建响应消息设置的定时器已超时,则确定判断次数是否超过设定阈值,其中,设定阈值可以根据用户需要进行自定义。

这样,终端设备在第一页面和第二页面之间建立通信通道时,通过为判断次数设置设定阈值,可以保证创建通信通道的线程正常运行,从而避免陷入死循环而导致程序瘫痪;

步骤2008:终端设备更新创建消息属性标识,返回执行步骤2002。

本公开实施例中,终端设备将创建消息属性标识进行更新,然后,返回执行步骤2002,重新启动进一步的建立通信通道的流程。

这样,终端设备在第一页面和第二页面之间建立通信通道时,通过更新创建消息属性标识,可以保证创建的通信通道的时效性,从而保证在第一页面和第二页面之间的通信及时、高效。

步骤2009:终端设备确定第一页面和第二页面之间的通信通道建立完成。

本公开实施例中,若终端设备确定接收到携带创建消息属性标识的创建响应消息,且确定针对接收创建响应消息设置的定时器未超时,以及确定判断次数未超过设定阈值,则确定第一页面和第二页面之间的通信通道建立完成。

步骤2010:终端设备确定第一页面和第二页面之间的通信通道建立失败。

本公开实施例中,若终端设备确定未接收到携带创建消息属性标识的创建响应消息,且确定判断次数超过设定阈值,则确定第一页面和第二页面之间的通信通道建立失败。

步骤210:终端设备响应于在第一页面中针对待呈现业务触发的业务请求,生成业务请求对应的加载请求消息,并通过通信通道,将加载请求消息发往第二页面,以使第二页面基于加载请求消息加载待呈现业务的业务数据,其中,加载请求消息中至少包含待呈现业务的业务标识和加载消息属性标识。

本公开实施例中,终端设备通过执行步骤2001—步骤2009,在第一页面和第二页面之间建立了通信通道。

本公开实施例中,参阅图6所示,终端设备可以在操作界面中的浏览器中呈现父页面,父页面中至少呈现有待呈现业务按钮,当用户点击该待呈现业务按钮时,终端设备确定用户在第一页面中触发了针对待呈现业务触发的业务请求,则终端设备响应于该业务请求,生成业务请求对应的加载请求消息。然后,将加载请求通过通信通道发往第二页面,其中,加载请求消息中至少包含待呈现业务的业务类型和加载消息属性标识。

可选的,待呈现业务的业务标识用于使第二页面基于加载请求信息加载待呈现业务的业务数据,加载消息属性标识用于终端设备在接收到第二页面返回的加载响应消息时,基于加载响应消息携带的加载消息属性标识查找对应的加载请求消息。

可选的,加载请求消息中包含的加载消息属性标识是针对相应的待呈现业务唯一设置且固定不变的。

例如,参阅图7所示,仍以第一页面为父页面、第二页面为子页面为例。

假设终端设备响应于在父页面触发的针对子页面的业务请求。

那么,终端设备基于待呈现业务的业务请求,生成对应的加载请求消息,且加载请求消息中至少包含待呈现业务的业务标识和加载消息属性标识。

又假设加载请求消息采用json结构进行编制,对应json结构中的type字段是message,加载消息属性标识可以是mid字段,同时携带通信通道的创建消息属性标识可以是cid字段,对应的待呈现业务的消息负载为payload。

那么,对应的加载请求消息可以是:

可选的,在执行步骤210时,若在第一页面中针对多个待呈现业务触发了相应的多个业务请求,那么,终端设备执行如下步骤:

A、终端设备响应于在第一页面中针对多个待呈现业务触发的相应的业务请求,对应生成多个业务请求各自的加载请求消息,其中,每个加载请求消息中至少包含相应的待呈现业务的业务标识和相应的加载消息属性标识。

本公开实施例中,若在第一页面中触发了针对多个第二页面的待呈现业务的业务请求,那么,终端设备可以分别响应于针对多个待呈现业务的业务请求,生成多个业务请求各自对应的加载请求消息,每个加载请求消息中至少包含相应的待呈现业务的业务标识和相应的加载消息属性标识。

B、终端设备基于多个加载请求消息,构建消息集合,以及分别通过通信通道,将多个加载请求消息发往多个第二页面,以使多个第二页面分别基于各自对应的加载请求消息加载对应的待呈现业务的业务数据。

本公开实施例中,终端设备在生成相应的加载请求消息之后,构建相应的消息集合,并分别通过通信通道,将多个加载请求消息发往多个第二页面,以使个第二页面分别基于各自对应的加载请求消息加载对应的待呈现业务的业务数据,其中,消息集合用于终端设备接收到多个第二页面返回的加载响应消息时,基于加载响应消息携带的加载消息属性标识,查找到相应的加载请求消息,从而使终端设备不用专门分配服务器或装置进行监听,进而可以做到节约资源,优化网络架构的目的。

C、终端设备每接收到一个第二页面返回的加载响应消息,基于加载响应消息携带的加载消息属性标识,从消息集合中移除相应的加载请求消息。

本公开实施例中,终端设备在将多个加载请求消息通过通信通道发往第二页面后,通常是一个一个地接收到第二页面返回的加载响应消息,那么,终端设备在每接收到一个第二页面返回的加载响应消息后,均从加载响应消息中获得所携带的加载消息属性标识,然后,再基于加载消息属性标识,查找到消息集合中相应的加载请求消息,并将相应的加载请求消息移除消息集合。

可选的,终端设备在将相应的加载请求消息移除消息集合时,可以调用相应的回调函数(callback),向第一页面返回对应的通知消息,从而实现异步调用方法,其中,通知消息用于通知第一页面针对待呈现业务已接收到第二页面返回的加载响应消息。

可选的,加载响应消息携带的加载消息属性标识是针对相应的待呈现业务唯一设置且固定不变的。

可选的,加载响应消息中还携带相应的通信通道的创建消息属性标识,创建消息属性标识用于终端设备验证接收到加载响应消息是第二页面通过预先建立的通信通道返回的。

可选的,终端设备在接收到加载响应消息之后,可以采用如下操作对获得加载响应消息进行消息验证:

操作a、首先,终端设备获得加载响应消息中的origin属性,然后,基于origin属性,确定加载响应消息是否是由第二页面返回的。若通过验证,确定加载响应消息是第二页面返回的,则确定第二页面是符合预期的iframe页面,从而避免了iframe的第二页面被意外篡改;若通过验证,确定加载响应消息不是第二页面返回的,则终端设备可以及时感知第二页面的异常情况,从而中断第一页面与被恶意篡改的第二页面之间的进一步通信。

操作b、由于终端设备接收到的第二页面返回的加载响应消息携带有对应的创建消息属性标识,则终端设备可以获得创建消息属性标识,基于创建消息属性标识,确定加载响应消息是第二页面通过通信通道返回的,从而保证了在第一页面和第二页面之间进行的通信的安全性。

例如,参阅图8所示,仍以第一页面为父页面、第二页面为一个子页面为例。

假设终端设备接收到子页面中返回的加载响应消息,以及加载响应消息同样采用json结构进行编制,其中,加载响应消息携带有加载消息属性标识。

那么,终端设备接收到子页面返回的加载响应消息可以是:

可选的,若加载响应消息也采用json编程格式,那么,终端设备还可以对加载响应消息的消息类型进行验证,基于json结构中的type字段,确定加载响应消息是第二页面基于加载请求消息做出相应处理后返回的。

D、终端设备确定消息集合中的多个加载请求消息均被移除时,释放消息集合占用的空间。

本公开实施例中,由于加载响应消息中携带有加载消息属性标识,以及加载消息属性标识是针对相应的待呈现业务唯一设置且固定不变的,因此,终端设备在接收到加载响应消息之后,可以基于接收到的加载响应消息中的加载消息属性标识,准确地查找到相应的加载请求消息,然后,从消息集合中将相应的加载请求消息进行移除,当确定消息集合中的加载请求消息均移除后,释放消息集合占用的空间,从而达到节约网络资源,优化网络架构的目的。

步骤220:终端设备确定第二页面返回的加载响应消息携带加载消息属性标识时,通过通信通道,获取第二页面加载的待呈现业务的业务数据。

本公开实施例中,终端设备通过上述验证操作后,确定第二页面返回的携带加载消息属性标识的加载响应消息后,通过通信通道,获取第二页面加载的待呈现业务的业务数据。

可选的,终端设备获取第二页面加载的待呈现业务的业务数据之后,可以将待呈现业务的业务数据展示在第一页面中;也可以将待呈现业务的业务数据展示在第一页面中,并将业务数据反馈至服务器。

这样,终端设备确定满足预设的触发条件时,生成用于在第一页面和第二页面之间建立通信通道的创建通道消息,其中,创建通道消息中至少包含创建消息属性标识,通过判断接到的携带创建消息属性标识的创建响应消息,确定在第一页面和第二页面之间建立了通信通道;然后,在第一页面和第二页面之间进行通信时,可以复用该通信通道,从而完成远程调用。

基于同一发明构思,参阅图9所示,本公开实施例中提供一种计算机设备(如,计算机装置),包括:

确定单元910,用于确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道;

响应单元920,用于响应于在所述第一页面中针对待呈现业务触发的业务请求,生成所述业务请求对应的加载请求消息,并通过所述通信通道,将所述加载请求消息发往所述第二页面,以使所述第二页面基于所述加载请求消息加载所述待呈现业务的业务数据,其中,所述加载请求消息中至少包含所述待呈现业务的业务标识和加载消息属性标识;

获取单元930,用于确定所述第二页面返回的加载响应消息携带所述加载消息属性标识时,通过所述通信通道,获取所述第二页面加载的所述待呈现业务的业务数据。

可选的,所述确定满足预设的触发条件时,所述确定单元910用于:

接收到在所述第一页面中触发的针对所述第二页面的通信请求时,确定满足预设的触发条件;或者,

接收到预设线程触发的通信请求时,确定满足预设的触发条件。

可选的,所述第一页面为父页面,所述第二页面为子页面;

或者,

所述第一页面为子页面,所述第二页面为父页面。

可选的,所述确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道,所述确定单元910用于:

确定满足预设的触发条件时,循环执行如下操作,直至确定接收到所述第二页面返回的创建响应消息携带创建消息属性标识为止:

生成用于在所述第一页面和所述第二页面之间建立通信通道的创建通道消息,其中,所述创建通道消息中至少包含创建消息属性标识;

通过异步消息投放函数postmessage应用程序编程接口API,将所述创建通道消息发往所述第二页面;

判断是否接收到携带所述创建消息属性标识的创建响应消息;

基于接收的所述携带所述创建消息属性标识的创建响应消息,确定所述第一页面和所述第二页面之间的通信通道建立完成。

可选的,所述确定单元910还用于:

在接收到所述创建响应消息之后,查找所述创建响应消息的来源origin属性,并基于所述origin属性,确定所述创建响应消息是所述第二页面返回的。

可选的,所述判断是否接收到携带所述创建消息属性标识的创建响应消息,所述确定单元910还用于:

若确定未接收到携带所述创建消息属性标识的创建响应消息,并且针对接收创建响应消息设置的定时器已超时,以及确定判断次数未达到设定阈值,则对所述创建消息属性标识进行更新。

可选的,所述判断是否接收到携带所述创建消息属性标识的创建响应消息,所述确定单元910还用于:

若确定未接收到所述携带所述创建消息属性标识的创建响应消息,且确定判断次数已达到所述设定阈值,则确定所述第一页面和所述第二页面之间的通信通道建立失败。

可选的,在确定所述第二页面返回的加载响应消息携带所述加载消息属性标识和所述通道属性标识时,通过所述通信通道,获取所述第二页面加载的所述待呈现业务的业务数据之后,所述获取单元930还用于:

将所述待呈现业务的业务数据展示在所述第一页面中;或者,

将所述待呈现业务的业务数据展示在所述第一页面中,并将所述业务数据反馈至服务器。

可选的,所述获取单元930还用于:

在接收到所述加载响应消息之后,获得所述加载响应消息的origin属性;

基于所述origin属性,确定所述加载响应消息是所述第二页面返回的。

可选的,若在所述第一页面中针对多个待呈现业务触发了相应的多个业务请求,则响应于在所述第一页面中针对待呈现业务触发的业务请求,生成所述业务请求对应的加载请求消息,并通过所述通信通道,将所述加载请求消息发往所述第二页面,所述第二响应单元920用于:

响应于在所述第一页面中针对多个待呈现业务触发的相应的业务请求,对应生成所述多个业务请求各自的加载请求消息,其中,每个加载请求消息中至少包含相应的待呈现业务的业务标识和相应的加载消息属性标识;

基于所述多个加载请求消息,构建消息集合,以及分别通过所述通信通道,将所述多个加载请求消息发往多个第二页面,以使所述多个第二页面分别基于各自对应的加载请求消息加载对应的待呈现业务的业务数据;

每接收到一个第二页面返回的加载响应消息,基于所述加载响应消息携带的加载消息属性标识,从所述消息集合中移除相应的加载请求消息;

确定所述消息集合中的多个加载请求消息均被移除时,释放所述消息集合占用的空间。

可选的,所述每个加载响应消息携带的加载消息属性标识是针对相应的待呈现业务唯一设置且固定不变的。

基于同一发明构思,参阅图10所示,本申请实施例提供一种计算机设备,例如,电子设备1000可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图10,电子设备1000可以包括以下一个或多个组件:处理组件1002,存储器1004,电源组件1006,多媒体组件1008,音频组件1010,输入/输出(I/O)的接口1012,传感器组件1014,以及通信组件1016。

处理组件1002通常控制电子设备1000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1002可以包括一个或多个处理器1020来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1002可以包括一个或多个模块,便于处理组件1002和其他组件之间的交互。例如,处理组件1002可以包括多媒体模块,以方便多媒体组件1008和处理组件1002之间的交互。

存储器1004被配置为存储各种类型的数据以支持在电子设备1000的操作。这些数据的示例包括用于在电子设备1000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件1006为电子设备1000的各种组件提供电力。电源组件1006可以包括电源管理系统,一个或多个电源,及其他与为电子设备1000生成、管理和分配电力相关联的组件。

多媒体组件1008包括在电子设备1000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1008包括一个前置摄像头和/或后置摄像头。当电子设备1000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件1010被配置为输出和/或输入音频信号。例如,音频组件1010包括一个麦克风(MIC),当电子设备1000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1004或经由通信组件1016发送。在一些实施例中,音频组件1010还包括一个扬声器,用于输出音频信号。

I/O接口1012为处理组件1002和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件1014包括一个或多个传感器,用于为电子设备1000提供各个方面的状态评估。例如,传感器组件1014可以检测到电子设备1000的打开/关闭状态,组件的相对定位,例如所述组件为电子设备1000的显示器和小键盘,传感器组件1014还可以检测电子设备1000或电子设备1000一个组件的位置改变,用户与电子设备1000接触的存在或不存在,电子设备1000方位或加速/减速和电子设备1000的温度变化。传感器组件1014可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件1016被配置为便于电子设备1000和其他设备之间有线或无线方式的通信。电子设备1200可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件1016经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1016还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,电子设备1000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例中计算机装置执行的任意一种方法。

基于同一发明构思,本公开实施例提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由处理器执行时,能够执行上述实施例中计算机装置执行的任意一种方法。

基于同一发明构思,本公开实施例提供一种计算机程序产品,包含可执行指令,当所述计算机程序产品的可执行指令由处理器执行时,能够实现如上述实施例中计算机装置执行的任意一种方法。

综上所述,本公开实施例中,终端设备确定满足预设的触发条件时,在第一页面和第二页面之间建立通信通道,再基于通信通道,响应于在第一页面中针对待呈现业务触发的业务请求,生成业务请求对应的加载请求消息,并将加载请求消息发往第二页面,当确定接收到第二页面返回的携带加载消息属性标识的加载响应消息后,通过通信通道,获取第二页面加载的待呈现业务的业务数据,其中,加载请求消息中至少包含加载消息属性标识,这样,终端设备通过为第一页面和第二页面建立通信通道,可以提高页面通信效率,也可以使第一页面或/和第二页面及时感知到对方的异常情况,保障iframe技术的安全通信;然后,响应于在第一页面中针对待呈现业务触发的业务请求,为对应该业务请求生成的加载请求消息,配置对应的加载消息属性标识,可以在将该加载请求消息发送到第二页面后,不必专门配置相应的监听服务器或装置,从而不仅增强了页面通信的安全性,也优化了网络架构,节约了网络资源。

本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。

显然,本领域的技术人员可以对本公开实施例进行各种改动和变型而不脱离本公开实施例的精神和范围。这样,倘若本公开实施例的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

技术分类

06120113195697