页面窗口通信方法及装置与流程

文档序号:16754983发布日期:2019-01-29 17:16阅读:257来源:国知局
页面窗口通信方法及装置与流程

本公开涉及计算机应用技术领域,尤其涉及一种页面窗口通信方法及装置。



背景技术:

随着互联网技术及网页程序的不断发展,互联网的应用范围不断扩大,人们对互联网的需求也越来越高级和复杂。例如,在浏览器应用中,人们希望网页程序能够实现多屏操作的需求,而实现这一需求,就需要实现多个页面窗口间的相互通信。

相关技术中,浏览器提供的window.postmessage方法,可以实现一个页面窗口向另一个页面窗口传递消息。但是上述方法,只能实现一个页面窗口与另一个页面窗口的单向通信,无法实现页面窗口间的双向通信。



技术实现要素:

本公开提出的页面窗口通信方法、装置、电子设备及存储介质,用于解决相关技术中,现有通过调用window.postmessage方法实现页面窗口间的通信的方法,无法实现页面窗口间的双向通信的问题。

本公开一方面实施例提出的页面窗口通信方法,包括:第一页面利用待通信的第二页面参数,调用页面打开函数,以获取所述第二页面的窗口对象;所述第一页面在所述第二页面的窗口对象中注册页面窗口加载回调函数;所述第一页面在检测到所述加载回调函数被调用时,向所述第二页面发送通信注册请求,所述通信注册请求中包含第一校验码及所述第一页面的页面参数,以使所述第二页面在确定所述第一校验码合法时,根据所述第一页面的页面参数,获取所述第一页面的窗口对象。

本公开另一方面实施例提出的页面窗口通信方法,包括:第二页面在加载过程中注册消息接收回调函数;所述第二页面在确定加载完成时,调用窗口加载回调函数,以使注册所述窗口加载回调函数的第一页面在检测到所述窗口加载回调函数被调用时,向所述第二页面发送通信注册请求;所述第二页面在检测到所述消息接收回调函数被调用时,获取所述消息接收回调函数的调用参数;所述第二页面判断所述调用参数中的第一校验码是否合法;若合法,则所述第二页面根据所述调用参数中的第一页面参数,获取第一页面的窗口对象。

本公开再一方面实施例提出的页面窗口通信装置,包括:获取模块,用于第一页面利用待通信的第二页面参数,调用页面打开函数,以获取所述第二页面的窗口对象;注册模块,用于所述第一页面在所述第二页面的窗口对象中注册页面窗口加载回调函数;发送模块,用于所述第一页面在检测到所述加载回调函数被调用时,向所述第二页面发送通信注册请求,所述通信注册请求中包含第一校验码及所述第一页面的页面参数,以使所述第二页面在确定所述第一校验码合法时,根据所述第一页面的页面参数,获取所述第一页面的窗口对象。

本公开又一方面实施例提出的页面窗口通信装置,包括:注册模块,用于第二页面在加载过程中注册消息接收回调函数;调用模块,用于所述第二页面在确定加载完成时,调用窗口加载回调函数,以使注册所述窗口加载回调函数的第一页面在检测到所述窗口加载回调函数被调用时,向所述第二页面发送通信注册请求;获取模块,用于所述第二页面在检测到所述消息接收回调函数被调用时,获取所述消息接收回调函数的调用参数;判断模块,用于所述第二页面判断所述调用参数中的第一校验码是否合法;若合法,则所述第二页面根据所述调用参数中的第一页面参数,获取第一页面的窗口对象。

本公开又一方面实施例提出的电子设备,其包括:处理器和存储器;其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如前所述的页面窗口通信方法。

本公开再一方面实施例提出的计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如前所述的页面窗口通信方法。

本公开另一方面实施例提出的计算机程序,该程序被处理器执行时实现如前所述的页面窗口通信方法。

本公开实施例提供的页面窗口通信方法、装置、电子设备、计算机可读存储介质及计算机程序,通过第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象,并在第二页面的窗口对象中注册页面窗口加载回调函数,进而第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求,通信注册请求中包含第一校验码及第一页面的页面参数,以使第二页面在确定第一校验码合法时,根据第一页面的页面参数,获取第一页面的窗口对象。由此,第一页面通过调用页面打开函数,打开第二页面并获取第二页面的窗口对象,并向第二页面发送通信注册请求,以使第二页面通过通信注册请求获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。

附图说明

本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本公开实施例所提供的一种页面窗口通信方法的流程示意图;

图2为本公开实施例所提供的另一种页面窗口通信方法的流程示意图;

图3为本公开实施例所提供的另一种页面窗口通信方法的流程示意图;

图4为本公开实施例所提供的一种页面窗口通信方法的信令交互图;

图5为本公开实施例所提供的一种页面窗口通信装置的结构示意图;

图6为本公开实施例所提供的另一种页面窗口通信装置的结构示意图;

图7为本公开实施例所提供的一种电子设备的结构示意图;

图8为本公开实施例所提供的一种非暂态计算机可读存储介质的结构示意图。

具体实施方式

下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的要素。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。

本公开实施例针对相关技术中,现有通过调用window.postmessage方法实现页面窗口间的通信的方法,无法实现页面窗口间的双向通信的问题,提出一种页面窗口通信方法。

本公开实施例提供的页面窗口通信方法,通过第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象,并在第二页面的窗口对象中注册页面窗口加载回调函数,进而第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求,通信注册请求中包含第一校验码及第一页面的页面参数,以使第二页面在确定第一校验码合法时,根据第一页面的页面参数,获取第一页面的窗口对象。由此,第一页面通过调用页面打开函数,打开第二页面并获取第二页面的窗口对象,并向第二页面发送通信注册请求,以使第二页面通过通信注册请求获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

下面参考附图对本公开提供的页面窗口通信方法、装置、电子设备、存储介质及计算机程序进行详细描述。

下面分别以进行通信的两个页面窗口侧为例,对本公开实施例提供的页面窗口通信方法进行详细说明。

首先以发起通信的页面窗口侧为例,对本公开实施例提供的页面窗口通信方法进行详细说明。

图1为本公开实施例所提供的一种页面窗口通信方法的流程示意图,该方法应用于发起通信的页面窗口。

如图1所示,该页面窗口通信方法,包括以下步骤:

步骤101,第一页面利用待通信的第二页面参数,调用页面打开函数,以获取所述第二页面的窗口对象。

其中,第二页面参数,可以包括窗口中显示的文档的统一资源定位符(uniformresourcelocator,简称url)、窗口名称、窗口特征、布尔值。页面打开函数,是指用于打开一个新的浏览器窗口或查找一个已命名的窗口的函数。

需要说明的是,在本公开实施例中,页面打开函数可以是window.open()函数,window.open()的语法规则为window.open(url,name,feature,replace)。其中,参数url、name、feature、replace分别为待打开页面中显示的文档的url、窗口名称、窗口特征、窗口的布尔值。第一页面可以调用页面打开函数,并将已知的待通信的第二页面的参数作为页面打开函数的参数,从而打开第二页面,并获取页面打开函数的返回值,即第二页面的窗口对象。

进一步的,在获取到第二页面的窗口对象之后,还可以将其存储,以便第一页面与第二页面进行通信时,调用第二页面的窗口对象。即在本公开实施例一种可能的实现形式中,上述步骤101之后,还可以包括:

将所述第二页面的窗口对象缓存至与所述第二页面对应的变量中。

需要说的是,为存储第二页面的窗口对象,以便在第一页面向第二页面发送信息时调用,可以创建于第二页面对应的变量并命名,进而将获取到的第二页面的窗口对象缓存值第二页面对应的变量中。比如,可以将第二页面对应的变量的变量名设置为childwindow。

步骤102,所述第一页面在所述第二页面的窗口对象中注册页面窗口加载回调函数。

其中,页面窗口加载回调函数,用于指示第二页面是否加载完成。

需要说明的是,若在第二页面中的所有元素未加载完成之前,第一页面就向第二页面发送信息,会导致在需要引用未加载的元素时,出现错误。因此,在第一页面与第二页面建立通信之前,第一页面需要确认第二页面中的所有元素已经加载完成,以避免建立通信连接失败。

在本公开实施例中,页面窗口加载回调函数可以是window.onlod函数,该函数可以在页面中的所有元素加载完成之后执行,因此,第一页面可以在第二页面的窗口对象中注册window.onload函数,即页面窗口加载回调函数,当第一页面检测到页面窗口加载回调函数被调用时,即可确定第二页面已经加载完成。

步骤103,所述第一页面在检测到所述加载回调函数被调用时,向所述第二页面发送通信注册请求,所述通信注册请求中包含第一校验码及所述第一页面的页面参数,以使所述第二页面在确定所述第一校验码合法时,根据所述第一页面的页面参数,获取所述第一页面的窗口对象。

在本公开实施例中,第一页面检测到在其在第二页面的窗口对象中注册的加载回调函数被调用时,即可确定第二页面中的所有元素已经加载完成,也就是说,第一页面可以开始建立与第二页面的通信连接。

需要说明的是,在与第二页面建立通信连接时,第一页面可以首先向第二页面发送通信注册请求,其中通信注册请求中包含第一校验码及第一页面的页面参数。第一校验码用于证明第一页面的合法性,以避免非法页面与第二页面建立连接,保证网络安全。第一校验码可以是自行预设的密码字符串,并缓存在第一页面和第二页面中,当第二页面接收到第一页面发送的第一校验码时,可以判断第一校验码与自身缓存的密码字符串是否一致,若一致,则可以确定第一校验码合法,即可以与第一页面建立通信连接;若不一致,则可以确定第一校验码不合法,即可以拒绝第一页面发送的通信注册请求。

相应的,第二页面可以根据通信注册请求中包含的第一页面的页面参数,获取第一页面的窗口对象。在第二页面确定第一校验码合法时,可以与第一页面建立通信连接,即可以根据第一页面的页面参数获取第一页面的窗口对象,并设置与第一页面对应的变量,将第一页面的窗口对象缓存在第一页面对应的变量中,以使第二页面可以根据第一页面的窗口对象向第一页面发送信息。比如,设置的与第一页面对应的变量的变量名可以为fatherwindow。

进一步的,在第一页面向第二页面发送通信注册请求并验证成功之后,即可实现第一页面与第二页面间的双向通信。而第一页面与第二页面互相发送信息之前,都需要首先确定缓存中是否包含对方对应的变量,以调用对方的窗口对象,成功投递信息。即在本公开实施例一种可能的实现形式中,上述步骤103之后,还可以包括:

所述第一页面在调用投递信息函数时,判断缓存中是否包含所述第二页面对应的变量,其中,调用投递信息函数的参数为待发送的信息;

若包含,则根据所述第二页面对应的变量中缓存的第二页面的窗口对象,将所述待发送的信息发送给与所述第二页面。

需要说明的是,第一页面向第二页面发送信息时,需要通过调用投递信息函数与第二页面对应的变量,向第二页面发送信息。但是,在第一页面与第二页面建立通信连接之后,若第一页面或第二页面进行了刷新,则已刷新的页面会丢失另一个页面对应的变量,从而导致已刷新页面无法向另一个页面成功发送信息。因此,第一页面在向第二页面发送信息之前,可以首先判断缓存中是否包含第二页面对应的变量,若包含,则可以通过调用投递信息函数,并将待发送信息设置为投递信息函数的参数,进而根据第二页面对应的变量中缓存的第二页面的窗口对象,将待发送的信息发送给第二页面。相应的,第二页面也可以通过相同的方法向第一页面发送信息。

举例来说,投递信息函数可以是postmessage函数,若缓存的第一页面对应的变量名为fatherwindow,第二页面对应的变量名为childwindow,则第一页面可以通过调用childwindow.postmessage向第二页面发送信息。相应的,在第二页面可以通过调用fatherwindow.postmessage向第一页面发送信息。

进一步的,若第一页面或第二页面向对方发送信息时,确定缓存中未包含另一个页面对应的变量,即其在与另一个页面建立通信连接之后进行了刷新,则可以将待发送的信息缓存,以在与另一个页面重新建立连接之后重新将待发送信息发送给另一个页面。即在本公开实施例一种可能的实现形式中,上述步骤103之后,还可以包括:

若缓存中未包含所述第二页面对应的变量,则将所述待发送的信息以所述第二页面的标识为索引存入遗失信息数组中。

需要说明的是,若第一页面向第二页面发送信息时,确定缓存中未包含第二页面对应的变量,则可以确定在于第二页面建立通信连接之后,第一页面进行的刷新,从而丢失了对第二页面的引用,无法向第二页面发送信息。因此,在本公开实施例一种可能的实现形式中,当缓存中未包含第二页面对应的变量时,第一页面可以将待发送的信息以第二页面的标识为索引存入以使信息数组中,以便与第一页面与第二页面重新建立连接后,将待发送信息重新发送给第二页面,提高页面窗口间信息传输的可靠性。其中,遗失信息数组可以是提前预设的。相应的,若第二页面向第一页面发送信息时,确定缓存中未包含第一页面对应的变量,也可以采用相同的方法将待发送的信息存入遗失信息数组。

本公开实施例提供的页面窗口通信方法,通过第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象,并在第二页面的窗口对象中注册页面窗口加载回调函数,进而第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求,通信注册请求中包含第一校验码及第一页面的页面参数,以使第二页面在确定第一校验码合法时,根据第一页面的页面参数,获取第一页面的窗口对象。由此,第一页面通过调用页面打开函数,打开第二页面并获取第二页面的窗口对象,并向第二页面发送通信注册请求,以使第二页面通过通信注册请求获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

在本公开一种可能实现形式中,若在第一页面与第二页面建立通信连接之后,其中一个页面进行了刷新操作,则可以通过未刷新页面向已刷新页面发送的信息,重新获取未刷新页面的串口对象,从而与未刷新页面重新建立通信连接。

下面结合图2,对本公开实施例提供的页面窗口通信方法进行进一步说明。

图2为本公开实施例所提供的另一种页面窗口通信方法的流程示意图。

如图2所示,该页面窗口通信方法,包括以下步骤:

步骤201,第一页面在检测到第一页面的消息接收回调函数被调用时,获取所述消息接收回调函数的调用参数。

其中,第一页面的消息接收回调函数,是在第一页面加载时注册的,用于接收其他页面向第一页面发送的信息。比如,消息接收回调函数可以时window.onmessage函数。

需要说明的是,当第一页面接收到其他页面发送的信息时,可以通过调用消息接收回调函数,获取其他页面向第一页面发送信息时调用的投递信息函数的参数,并将调用获取到的投递信息函数的参数作为第一页面的消息接收回调函数的调用参数。

步骤202,判断所述调用参数中是否包含所述第二页面的参数,若是,则执行步骤203;否则执行步骤205。

步骤203,根据所述第二页面的参数获取所述第二页面的窗口对象。

需要说明的是,第一页面的消息接收回调函数的调用参数,是根据向第一页面发送信息的页面调用的投递信息函数的参数确定,而投递信息的参数中包括待发送的信息、待发送信息的类型、调用页面的当前状态以及调用页面的参数信息,因此,可以通过判断第一页面的消息接收回调函数的调用参数中,是否包含第二页面的参数,以确定向第一页面发送信息的页面是否为第二页面。若调用参数中包含第二页面的参数,则可以确定当前向第一页面发送信息的为第二页面,即可以通过调用参数获取第二页面的参数,并根据第二页面的参数获取第二页面的窗口对象,并将缓存在第二页面对应的变量中,以重新建立第一页面与第二页面间的通信连接。

进一步的,页面窗口间进行通信时,可以在将待发送信息与校验码一起发送,以便于接收信息的页面核对发送页面的合法性,提高页面通信的安全性。即在本公开实施例一种可能的实现形式中,上述步骤203之前,还可以包括:

确定所述调用参数中的第一校验码合法。

需要说明的是,第一页面可以通过判断调用参数中的第一校验码是否与预设并缓存的密码字符串一致,确定第一校验码的合法性。具体的,若调用参数中的第一校验码与缓存的密码字符串一致,则可以确定第一校验码合法,即可以获取第二页面的窗口对象,并与第二页面建立通信连接;若调用参数中的第一校验码与缓存的密码字符串不一致,则可以确定第一校验码不合法,即可以不获取第二页面的窗口对象,拒绝与第二页面建立通信连接。

步骤204,根据所述第二页面的窗口对象,将所述遗失信息数组中以所述第二页面的标识为索引的待发送信息,发送给所述第二页面。

在本公开实施例中,第一页面获取到第二页面的窗口对象之后,即与第二页面重新建立通信连接之后,即可以根据第二页面的窗口对象,确定遗失信息数据中是否包含以第二页面标识为索引的待发送信息。若包含,则可以通过调用投递信息函数将该待发送信息,发送给第二页面,以避免因第一页面与第二页面之间的通信连接断开,而导致的页面窗口间的通信异常。

进一步的,在第一页面将遗失信息数组中以第二页面的标识为索引的待发送信息,发送给第二页面之后,以第二页面的标识为索引的待发送信息即失效。因此,在本公开实施例一种可能的实现形式中,上述步骤204之后,还可以包括:

清除所述遗失信息数组中以所述第二页面的标识为索引的待发送信息。

需要说明的是,在第一页面将遗失信息数组中以第二页面的标识为索引的待发送信息,发送给第二页面之后,以第二页面的标识为索引的待发送信息将成为无效信息,并且若将已发送的待发送信息继续存储在遗失信息数组中,会造成第一页面下次与第二页面重新建立连接之后,将已发送的以第二页面的标识为索引的待发送信息重复发送给第二页面。因此,可以将该待发送信息从遗失信息数组中清除,以节约缓存空间,并避免待发送信息的重复发送,影响页面窗口间的正常通信。

步骤205,根据所述调用参数中第三页面的参数,获取所述第三页面的窗口对象。

需要说明的是,在本公开实施例一种可能的实现形式中,可以实现多个页面之间的相互通信,因此,第一页面在确定消息接收回调函数的调用参数中未包含第二页面的参数时,那么当前向第一页面发送信息的第三页面,可能是其它之前与第一页面建立过通信连接的页面,或者是请求与第一页面建立通信连接的新的页面,即第一页面也可以根据调用函数中包含的第三页面的参数,获取第三页面的窗口对象,并缓存在于第三页面对应的变量中,建立第一页面与第三页面之间的通信连接。

进一步的,由于第三页面可能是之前与第一页面建立过通信连接的页面,也可能是请求与第一页面建立通信连接的新的页面,因此,还可以确定是否存在第一页面未成功发送给第三页面的待发送信息。即在本公开实施例一种可能的实现形式中,上述步骤205之后,还可以包括:

判断所述遗失信息数组中是否包含以第三页面的标识为索引的待发送信息;

若包含,则根据所述第三页面的窗口对象,将所述遗失信息数组中以第三页面的标识为索引的待发送信息,发送给所述第三页面。

可以理解的是,在本公开实施例中,可以根据第三页面的窗口对象,判断遗失信息数组中是否包含以第三页面的标识为索引的待发送信息。若包含,则可以确定第三页面为之前与第一页面建立过通信的页面,即可以根据第三页面的窗口对象,将遗失信息数组中以第三页面的标识为索引的待发送信息,发送给第三页面,并清除遗失信息数组中以第三页面的标识为索引的待发送信息。

本公开实施例提供的页面窗口通信方法,通过第一页面在检测到第一页面的消息接收回调函数被调用时,获取消息接收回调函数的调用参数,并在判断调用参数中包含第二页面的参数时,根据第二页面的参数获取第二页面的窗口对象,进而根据第二页面的窗口对象,将遗失信息数组中以第二页面的标识为索引的待发送信息,发送给所述第二页面;否则,根据调用参数中第三页面的参数,获取第三页面的窗口对象。由此,第一页面通过消息接收回调函数的调用参数,并根据调用参数中包含的页面参数,获取页面的窗口对象,与之前断开连接的页面重新建立通信连接,并将遗失信息数组中的待发送信息发送给相应的页面,从而不仅实现了页面窗口间的双向通信,而且在其中一个页面窗口刷新后,重新建立页面窗口间的通信连接,进一步改善了用户体验。

下面以接收通信请求的页面窗口侧为例,对本公开实施例提供的页面窗口通信方法进行详细说明。

下面结合图3,对本公开实施例提供的页面窗口通信方法,进行进一步说明。

图3为本公开实施例所提供的另一种页面窗口通信方法的流程示意图,该方法应用于通信请求的页面窗口。

如图3所示,该通信请求的页面窗口侧,包括以下步骤:

步骤301,所述第二页面在确定加载完成时,调用窗口加载回调函数,以使注册所述窗口加载回调函数的第一页面在检测到所述窗口加载回调函数被调用时,向所述第二页面发送通信注册请求。

其中,窗口加载回调函数,是指通过调用页面打开函数打开第二页面的第一页面,在第二页面中注册的、用于指示第二页面是否加载完成的函数。比如,窗口加载回调函数可以是window.onlod函数。

需要说明的是,若在第二页面中的所有元素未加载完成之前,第一页面就向第二页面发送信息,会导致在需要引用未加载的元素时,出现错误。因此,第二页面在加载完成时,便立即调用窗口加载回调函数,以通知第一页面,第二页面已加载完成,可以向其发送通信注册请求。

步骤302,所述第二页面在检测到所述消息接收回调函数被调用时,获取所述消息接收回调函数的调用参数。

其中,第二页面的消息接收回调函数,是在第二页面加载时注册的,用于接收其他页面向第二页面发送的信息。比如,消息接收回调函数可以时window.onmessage函数。

需要说明的是,当第二页面接收到其他页面发送的信息时,第二页面的消息接收回调函数会被调用,获取其他页面向第二页面发送信息时调用的投递信息函数的参数,并将获取到的投递信息函数的参数作为第二页面的消息接收回调函数的调用参数。

步骤303,所述第二页面判断所述调用参数中的第一校验码是否合法。

其中,第一校验码,用于证明第一页面的合法性,以避免非法页面与第二页面建立连接,保证网络安全。第一校验码可以包含在请求与第二页面建立通信连接的第一页面发送的通信注册请求中,通信注册请求中还包括第一页面的页面参数。

需要说明的是,第二页面的消息接收回调函数的调用参数,是根据向第二页面发送信息的第一页面调用的投递信息函数的参数确定,而投递信息的参数中包括待发送的信息、待发送信息的类型、调用页面的当前状态以及调用页面的参数信息,因此,可以通过第二页面的消息接收回调函数的调用参数中包含的待发送信息,确定第一页面发送的第一校验码,进而确定第一校验码是否合法。

进一步的,验证第一校验码是否合法的密码字符串可以预设,并根据第一校验码与预设的密码字符串是否一致,判断第一校验码是否合法。即在本公开实施例一种可能的实现形式中,上述步骤303,可以包括:

所述第二页面判断所述第一校验码,是否与预设的与所述第一页面标识对应的第二校验码匹配。

需要说明的是,在本公开实施例一种可能的实现形式中,不同的页面可以预设不同的第二校验码,即用于验证第一校验码是否合法的密码字符串,并以页面的标识为索引缓存每个页面对应的第二校验码,以避免非法页面与第二页面建立连接,进一步提高页面窗口间通信的安全性。

具体的,若第一校验码与第一页面标识对应的第二校验码匹配,则可以确定第一校验码合法;若第一校验码与第一页面标识对应的第二校验码不匹配,则可以确定第一校验码非法,并拒绝第一页面的通信注册请求。

步骤304,若合法,则所述第二页面根据所述调用参数中的第一页面参数,获取第一页面的窗口对象。

在本公开实施例中,若第二页面确定第一校验码合法,则可以与第一页面建立通信连接,并根据调用参数中第一页面的页面参数,获取第一页面的窗口对象,并设置与第一页面对应的变量,将第一页面的窗口对象缓存在第一页面对应的变量中,以使第二页面可以根据第一页面的窗口对象向第一页面发送信息。比如,设置的与第一页面对应的变量的变量名可以为fatherwindow。

本公开实施例提供的页面窗口通信方法,通过第二页面在确定加载完成时,调用窗口加载回调函数,以使注册窗口加载回调函数的第一页面在检测到窗口加载回调函数被调用时,向第二页面发送通信注册请求,第二页面在检测到消息接收回调函数被调用时,获取消息接收回调函数的调用参数,并在确定调用参数中的第一校验码合法时,第二页面根据调用参数中的第一页面参数,获取第一页面的窗口对象。由此,第二页面通过窗口加载调用函数通知第一页面,其已加载完成,以使第一页面向其发送通信注册请求,并根据消息接收回调函数的调用参数获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

图4为本公开实施例所提供的一种页面窗口通信方法的信令交互图。

如图4所示,该页面窗口通信方法,包括以下步骤:

步骤401,第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象。

步骤402,第二页面在加载过程中注册消息接收回调函数。

步骤403,第二页面在确定加载完成时,调用窗口加载回调函数。

步骤404,第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求。

其中,通信注册请求中包含第一校验码及第一页面的页面参数,以使第二页面在确定第一校验码合法时,根据第一页面的页面参数,获取第一页面的窗口对象。

步骤405,第二页面在检测到消息接收回调函数被调用时,获取消息接收回调函数的调用参数。

步骤406,第二页面判断调用参数中的第一校验码是否合法;

步骤407,若合法,则第二页面根据调用参数中的第一页面参数,获取第一页面的窗口对象。

上述过程,通过第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象,第二页面在加载过程中注册消息接收回调函数,并在确定加载完成时,调用窗口加载回调函数,第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求,第二页面在检测到消息接收回调函数被调用时,获取消息接收回调函数的调用参数,并判断调用参数中的第一校验码是否合法,若合法,则第二页面根据调用参数中的第一页面参数,获取第一页面的窗口对象。由此,第一页面通过调用页面打开函数,打开第二页面并获取第二页面的窗口对象,并向第二页面发送通信注册请求,以使第二页面通过通信注册请求获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

为了实现上述实施例,本公开还提出一种页面窗口通信装置。

图5为本公开实施例提供的一种页面窗口通信装置的结构示意图,应用于发起通信的页面窗口。

如图5所示,该页面窗口通信装置50,包括:

第一获取模块501,用于第一页面利用待通信的第二页面参数,调用页面打开函数,以获取所述第二页面的窗口对象;

注册模块502,用于所述第一页面在所述第二页面的窗口对象中注册页面窗口加载回调函数;

第一发送模块503,用于所述第一页面在检测到所述加载回调函数被调用时,向所述第二页面发送通信注册请求,所述通信注册请求中包含第一校验码及所述第一页面的页面参数,以使所述第二页面在确定所述第一校验码合法时,根据所述第一页面的页面参数,获取所述第一页面的窗口对象。

在实际使用时,本公开实施例提供的页面窗口通信装置,可以被配置在任意电子设备中,以执行前述页面窗口通信方法。

本公开实施例提供的页面窗口通信装置,通过第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象,并在第二页面的窗口对象中注册页面窗口加载回调函数,进而第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求,通信注册请求中包含第一校验码及第一页面的页面参数,以使第二页面在确定第一校验码合法时,根据第一页面的页面参数,获取第一页面的窗口对象。由此,第一页面通过调用页面打开函数,打开第二页面并获取第二页面的窗口对象,并向第二页面发送通信注册请求,以使第二页面通过通信注册请求获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

在本公开一种可能的实现形式中,上述页面窗口通信装置50,还包括:

缓存模块504,用于将所述第二页面的窗口对象缓存至与所述第二页面对应的变量中。

在本公开另一种可能的实现形式中,上述页面窗口通信装置50,还包括:

第一判断模块505,用于所述第一页面在调用投递信息函数时,判断缓存中是否包含所述第二页面对应的变量,其中,调用投递信息函数的参数为待发送的信息;

若包含,则根据所述第二页面对应的变量中缓存的第二页面的窗口对象,将所述待发送的信息发送给与所述第二页面。

在本公开再一种可能的实现形式中,上述页面窗口通信装置50,还包括:

存储模块506,用于在缓存中是未包含所述第二页面对应的变量时,将所述待发送的信息以所述第二页面的标识为索引存入遗失信息数组中。

在本公开又一种可能的实现形式中,上述页面窗口通信装置50,还包括:

第二获取模块507,用于所述第一页面在检测到第一页面的消息接收回调函数被调用时,获取所述消息接收回调函数的调用参数;

第二判断模块508,用于判断所述调用参数中是否包含所述第二页面的参数;

若包含,则根据所述第二页面的参数获取所述第二页面的窗口对象;

第二发送模块509,用于根据所述第二页面的窗口对象,将所述遗失信息数组中以所述第二页面的标识为索引的待发送信息,发送给所述第二页面。

在本公开另一种可能的实现形式中,上述页面窗口通信装置50,还包括:

第三获取模块510,在所述调用参数中未包含所述第二页面的参数时,根据所述调用参数中第三页面的参数,获取所述第三页面的窗口对象;

第三判断模块511,用于判断所述遗失信息数组中是否包含以第三页面的标识为索引的待发送信息;

若包含,则根据所述第三页面的窗口对象,将所述遗失信息数组中以第三页面的标识为索引的待发送信息,发送给所述第三页面。

在本公开再一种可能的实现形式中,上述页面窗口通信装置50,还包括:

确定模块512,用于确定所述调用参数中的第一校验码合法。

在本公开又一种可能的实现形式中,上述页面窗口通信装置50,还包括:

清除模块513,用于清除所述遗失信息数组中以所述第二页面的标识为索引的待发送信息。

需要说明的是,前述对图1、图2、图3或图4所示的页面窗口通信方法实施例的解释说明也适用于该实施例的推送信息展现装置50,此处不再赘述。

本公开实施例提供的页面窗口通信装置,通过第一页面在检测到第一页面的消息接收回调函数被调用时,获取消息接收回调函数的调用参数,并在判断调用参数中包含第二页面的参数时,根据第二页面的参数获取第二页面的窗口对象,进而根据第二页面的窗口对象,将遗失信息数组中以第二页面的标识为索引的待发送信息,发送给所述第二页面;否则,根据调用参数中第三页面的参数,获取第三页面的窗口对象。由此,第一页面通过消息接收回调函数的调用参数,并根据调用参数中包含的页面参数,获取页面的窗口对象,与之前断开连接的页面重新建立通信连接,并将遗失信息数组中的待发送信息发送给相应的页面,从而不仅实现了页面窗口间的双向通信,而且在其中一个页面窗口刷新后,重新建立页面窗口间的通信连接,进一步改善了用户体验。

为了实现上述实施例,本公开还提出另一种页面窗口通信装置。

图6为本公开实施例提供的另一种页面窗口通信装置的结构示意图,应用于接收通信请求的页面窗口侧。

如图6所示,该页面窗口通信装置60,包括:

注册模块61,用于第二页面在加载过程中注册消息接收回调函数;

调用模块62,用于所述第二页面在确定加载完成时,调用窗口加载回调函数,以使注册所述窗口加载回调函数的第一页面在检测到所述窗口加载回调函数被调用时,向所述第二页面发送通信注册请求;

获取模块63,用于所述第二页面在检测到所述消息接收回调函数被调用时,获取所述消息接收回调函数的调用参数;

判断模块64,用于所述第二页面判断所述调用参数中的第一校验码是否合法;

若合法,则所述第二页面根据所述调用参数中的第一页面参数,获取第一页面的窗口对象。

在实际使用时,本公开实施例提供的页面窗口通信装置,可以被配置在任意电子设备中,以执行前述页面窗口通信方法。

本公开实施例提供的页面窗口通信装置,通过第二页面在确定加载完成时,调用窗口加载回调函数,以使注册窗口加载回调函数的第一页面在检测到窗口加载回调函数被调用时,向第二页面发送通信注册请求,第二页面在检测到消息接收回调函数被调用时,获取消息接收回调函数的调用参数,并在确定调用参数中的第一校验码合法时,第二页面根据调用参数中的第一页面参数,获取第一页面的窗口对象。由此,第二页面通过窗口加载调用函数通知第一页面,其已加载完成,以使第一页面向其发送通信注册请求,并根据消息接收回调函数的调用参数获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

在本公开一种可能的实现形式中,上述判断模块64,具体用于:

所述第二页面判断所述第一校验码,是否与预设的与所述第一页面标识对应的第二校验码匹配。

需要说明的是,前述对图1、图2、图3或图4所示的页面窗口通信方法实施例的解释说明也适用于该实施例的推送信息展现装置60,此处不再赘述。

本公开实施例提供的页面窗口通信装置,通过第二页面在确定加载完成时,调用窗口加载回调函数,以使注册窗口加载回调函数的第一页面在检测到窗口加载回调函数被调用时,向第二页面发送通信注册请求,第二页面在检测到消息接收回调函数被调用时,获取消息接收回调函数的调用参数,并在确定调用参数中的第一校验码合法时,第二页面根据调用参数中的第一页面参数,获取第一页面的窗口对象。由此,第二页面通过窗口加载调用函数通知第一页面,其已加载完成,以使第一页面向其发送通信注册请求,并根据消息接收回调函数的调用参数获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

为了实现上述实施例,本公开还提出一种电子设备。

图7为本公开实施例提供的电子设备的结构示意图。

下面参考图7,其示出了适于用来实现本公开实施例的电子设备700的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储装置708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

通常,以下装置可以连接至i/o接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从rom702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。

或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本公开实施例的页面窗口通信方法的解释说明,此处不再赘述。

本公开实施例提供的电子设备,可以执行如前所述的页面窗口通信方法,通过第一页面利用待通信的第二页面参数,调用页面打开函数,以获取第二页面的窗口对象,并在第二页面的窗口对象中注册页面窗口加载回调函数,进而第一页面在检测到加载回调函数被调用时,向第二页面发送通信注册请求,通信注册请求中包含第一校验码及第一页面的页面参数,以使第二页面在确定第一校验码合法时,根据第一页面的页面参数,获取第一页面的窗口对象。由此,第一页面通过调用页面打开函数,打开第二页面并获取第二页面的窗口对象,并向第二页面发送通信注册请求,以使第二页面通过通信注册请求获取第一页面的窗口对象,之后第一页面、第二页面即可利用对方的窗口对象向对方发送信息,从而实现了页面窗口间的双向通信,改善了用户体验。

为了实现上述实施例,本公开还提出一种非暂态计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述实施例所述的页面窗口通信方法。

图8为图示根据本公开的实施例的计算机可读存储介质的示意图。如图8所示,根据本公开实施例的计算机可读存储介质800,其上存储有非暂态计算机可读指令810。当该非暂态计算机可读指令810由处理器运行时,执行前述的本公开各实施例的页面窗口通信方法的全部或部分步骤。

为了实现上述实施例,本公开再一方面实施例提供一种计算机程序,该程序被处理器执行时,以实现本公开实施例所述的页面窗口通信方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1