多窗口组件间通信的方法及装置的制造方法

文档序号:8282145阅读:297来源:国知局
多窗口组件间通信的方法及装置的制造方法
【技术领域】
[0001]本发明涉及互联网技术领域,具体涉及一种多窗口组件间通信的方法及装置。
【背景技术】
[0002]在数据可视化工程中,为了获取更大的显示区域通常采用多屏的设计方案。在基于Web的多屏应用程序中,通过扩展一个浏览器窗口使其覆盖所有屏幕,然后在该窗口内的不同屏幕区域中显示不同内容。然而随着浏览器窗口显示面积的不断扩大、窗口内元素的增多以及交互复杂程度的提高,单线程的JavaScript应用程序将在性能上面临非常大的挑战。在数据可视化工程中,由于要进行频繁的数据运算以及大量的图形绘制,JavaScript的执行与Π渲染的相互阻塞问题会时有发生。而在大数据量的情况下,例如使用力学布局计算数百个点的位置并实时渲染等问题会更加突出,通常会导致浏览器发生卡顿或长时间失去反应、页面加载不出来或者用户操作不能及时的回应等问题,影响了可视化效果以及用户体验。
[0003]超文本标志语言第五版(Hyper Text Markup Language,简称HTML5)提出了基于Web Work的JavaScript多线程解决方案,但是Web Work所创建的并不是一个完整的线程,只适合进行数据运算,而不能进行Π渲染和更新,仍然不能解决单纯由Π渲染而造成浏览器卡顿的问题。
[0004]通过创建多个完整独立的线程进行分工合作,为每一个窗口开启一个独立的线程,每个线程负责整个应用程序的一部分工作,实现了前端性能负载的相对均衡和Π渲染的阻塞问题,但是由于各个窗口的JavaScript的执行环境之间是相互独立的,彼此之间无法进行通信,导致各独立线程之间消息事件不能够有效传递,无法实现多线程间的协同工作。

【发明内容】

[0005]针对现有技术中的缺陷,本发明提供了一种多窗口组件间通信的方法及装置,实现了多窗口环境下多组件间的信息传递,进而实现了基于多窗口的多线程JavaScript协同工作,并最终解决了由于单线程JavaScript执行与UI渲染互相阻塞而造成的前端性能冋题。
[0006]第一方面,本发明提供一种多窗口组件间通信的装置,包括:
[0007]获取模块,用于在接收到第一窗口的第一消息事件时,根据所述第一消息事件,获取所述第一消息事件对应的触发对象,以及所述触发对象的操作指令,所述触发对象为一个以上第二窗口的至少一个组件;
[0008]发布模块,用于向所述触发对象发布所述操作指令,以使所述触发对象执行所述操作指令对应的操作。
[0009]可选的,所述装置还包括:
[0010]第一接收模块,用于在第一窗口发布第一消息事件时,接收所述第一窗口的第一消息事件。
[0011]可选的,所述装置还包括:
[0012]第二接收模块,用于接收一个以上第二窗口的组件订阅的第二消息事件;
[0013]所述发布模块,具体用于:
[0014]在所述触发对象与所述第二消息事件对应的所述一个以上第二窗口的组件一致时,向所述一个以上第二窗口的组件发布所述操作指令。
[0015]可选的,所述装置还包括:
[0016]窗口标识符添加模块,用于为所述第一窗口和一个以上第二窗口添加窗口标识符,所述一个以上第二窗口通过所述窗口标识符订阅所述第二消息事件,
[0017]和/ 或,
[0018]所述获取模块,具体用于:
[0019]在接收到第一窗口的第一消息事件时,获取所述第一窗口对应的触发对象的窗口标识符;
[0020]所述发布模块,具体用于:
[0021]根据所述窗口标识符向与所述窗口标识符对应的触发对象发布所述操作指令。
[0022]可选的,所述装置还包括:
[0023]存储模块,用于存储所述第一消息事件,
[0024]所述存储模块,具体用于:
[0025]在所述发布模块发布所述操作指令之后,在所述第一窗口或一个以上的第二窗口关闭时,将所述第一窗口或一个以上的第二窗口的组件的状态进行保存,以使所述第一窗口或一个以上的第二窗口的组件被打开时,显不所述第一窗口或一个以上的第二窗口的组件保存的最终状态。
[0026]可选的,所述第一消息事件或所述第二消息事件包括下述的至少一种:
[0027]配置窗口属性的事件、触控事件、命令事件。
[0028]第二方面,本发明还提供了一种多窗口组件间通信的方法,包括:
[0029]在接收到第一窗口的第一消息事件时,根据所述第一消息事件,获取所述第一消息事件对应的触发对象,以及所述触发对象的操作指令,所述触发对象为一个以上第二窗口的至少一个组件;
[0030]向所述触发对象发布所述操作指令,以使所述触发对象执行所述操作指令对应的操作。
[0031]可选的,所述方法还包括:
[0032]在第一窗口发布第一消息事件时,接收所述第一窗口的第一消息事件。
[0033]可选的,所述方法还包括:
[0034]接收一个以上第二窗口的组件订阅的第二消息事件;
[0035]相应地,向所述触发对象发布所述操作指令,包括:
[0036]在所述触发对象与所述第二消息事件对应的所述一个以上第二窗口的组件一致时,向所述一个以上第二窗口的组件发布所述操作指令。
[0037]可选的,所述方法还包括:
[0038]为所述第一窗口和一个以上第二窗口添加窗口标识符,所述一个以上第二窗口通过所述窗口标识符订阅所述第二消息事件,
[0039]和/ 或,
[0040]在接收到第一窗口的第一消息事件时,获取所述第一窗口对应的触发对象的窗口标识符,
[0041]相应地,向所述触发对象发布所述操作指令,包括:
[0042]根据所述窗口标识符向与所述窗口标识符对应的触发对象发布所述操作指令。
[0043]可选的,所述方法还包括:
[0044]存储所述第一消息事件,
[0045]相应的,在向所述触发对象发布所述操作指令,以使所述触发对象执行所述操作指令对应的操作之后,所述方法还包括:
[0046]当所述第一窗口或一个以上的第二窗口关闭时,将所述第一窗口或一个以上的第二窗口的组件的状态进行保存,以使所述第一窗口或一个以上的第二窗口的组件被打开时,显示所述第一窗口或一个以上的第二窗口的组件保存的最终状态。
[0047]可选的,所述第一消息事件或所述第二消息事件包括下述的至少一种:
[0048]配置窗口属性的事件、触控事件、命令事件。
[0049]由上述技术方案可知,本发明提供的一种多窗口组件间通信的方法及装置,该方法通过在接收到第一窗口的第一消息事件,获取该第一消息事件对应的触发对象,以及该触发对象的操作指令,并向该触发对象发布操作指令,使该触发对象对应的第二窗口的组件执行该操作指令对应的操作,该方法实现了多窗口组件之间信息的有效传递,提升了用户的体验。
【附图说明】
[0050]图1为本发明一实施例提供的多窗口组件间通信的方法的流程示意图;
[0051]图2为本发明另一实施例提供的多窗口组件间通信的方法的流程示意图;
[0052]图3A为本发明一实施例提供的窗口的组件订阅消息事件的示意图;
[0053]图3B为本发明一实施例提供的窗口的组件发布消息事件的示意图;
[0054]图4A至图4D为本发明一实施例提供的基于触控事件实现各个窗口组件之间的通信的示意图;
[0055]图5为本发明一实施例提供的多窗口组件间通信的装置的结构示意图。
【具体实施方式】
[0056]下面结合附图,对发明的【具体实施方式】作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0057]为了解决在同一个浏览器窗口显不多个组件,JavaScript的执行与UI植染相互阻塞的问题,本发明采用创建多个完整而又独立的Π线程进行分工合作,其中每个线程负责整个应用程序的一部分工作,从此解决了在同一个浏览器窗口显示多个组件,JavaScript的执行与UI植染相互阻塞的问题。
[0058]基于上述思想本申请采用了在浏览器中为每一个窗口开启一个独立的Π线程,此外,每一个窗口又有一个独立的JavaScript执行环境,该环境下的JavaScript拥有完整的页面操作能力。因此,通过开启多个窗口,并且在这些窗口中运行同一个应用程序实现了多线程处理。但是上述方法还需要一套完成的通信机制来保证数据在多个窗口内的组件间有效传递。本发明实施例以在浏览器本地进行多窗口的组件间的通
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1