中文字幕无码日韩视频无码三区

多窗口組件間通信的方法及裝置的制造方法

文檔序號:8282145閱讀:328來源:國知局
多窗口組件間通信的方法及裝置的制造方法
【技術領域】
[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