我有一个 iFrame 正在触发我希望父页面获取的事件。本质上是这个问题的反面。我可以在 iFrame 中获取事件,所以我知道它正在触发,但在父级中没有任何反应。
我正在使用 YUI 3,因此任何基于此的答案都会得到双赞,但我们非常感谢所有帮助。
我有一个 iFrame 正在触发我希望父页面获取的事件。本质上是这个问题的反面。我可以在 iFrame 中获取事件,所以我知道它正在触发,但在父级中没有任何反应。
我正在使用 YUI 3,因此任何基于此的答案都会得到双赞,但我们非常感谢所有帮助。
显然事件不会跨帧传播。这是我解决它的方法:
在父框架中定义这个全局函数:
var fireGlobalEvent = function (e, param) {
YUI().use('event-custom', function (Y) {
var publisher = new Y.EventTarget();
publisher.publish(e, {
broadcast: 2, // global notification
emitFacade: true // emit a facade so we get the event target
}).fire(param);
});
};
然后只需在子级中调用它即可触发父级中的事件。
window.parent.fireGlobalEvent('my_custom_global_event', 'an_extra_param');
然后事件被父模块捕获:
Y.Global.on('my_custom_global_event', function (e, param) {
// do something
});