2016-12-14 29 views
2

我正在爲項目構建硬件庫並使用JQuery觸發狀態更新。將所有JQuery自定義事件傳播到iframe

有一個名爲「objectName」的對象。該對象是一組表示爲「objectName.childName」的對象的散列。其中部分目標是連接和控制硬件(將USB上的條形碼掃描器視爲網頁)。在連接週期結束時,JQuery被用來觸發「CONNECTED」事件或其他對象。

$(this.childName).trigger("CONNECTED"); 
//This is the call that fails to propagate (called within the objectName) 

最近的變化要求我們窩導航組件到iframe,因爲硬件連接很慢,凍結硬件的纔是最好的。這意味着要求連接的代碼在iframe中運行並連接到父框架。連接工作並且Application/IFrame頁面中的兩個對象都以相同的狀態結束,但觸發的事件不會從父框架傳播到iframe。

Application Page (Frozen) -> IFrame Page (Navigational Components) 

問題:究竟如何捕捉所有通過「對象名」和傳播他們下到iframe的孩子們發出的事件,所以內嵌框架可以被通知連接或其它事件類型的?假設IE11將成爲目標瀏覽器。最好的解決方案是運行在應用程序頁面上的一些代碼,並且不會修改IFrame頁面。

下面是將對象從一個傳遞到另一個的樣子。

應用程序頁面

window.requestObject = function(){ 
    return objectName; //This is within the Application Page. 
} 

的IFrame頁

window.objectName = window.parent.requestObject(); 
// This is called on every iframe navigation 
+0

可以使用'MessageChannel'或'SharedWorker'父幀和''