我正在为项目构建硬件库并使用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
可以使用'MessageChannel'或'SharedWorker'父帧和''