2016-12-14 48 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'父帧和''