4

我有一个 iFrame 正在触发我希望父页面获取的事件。本质上是这个问题的反面。我可以在 iFrame 中获取事件,所以我知道它正在触发,但在父级中没有任何反应。

我正在使用 YUI 3,因此任何基于此的答案都会得到双赞,但我们非常感谢所有帮助。

4

1 回答 1

4

显然事件不会跨帧传播。这是我解决它的方法:

在父框架中定义这个全局函数:

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
    });
于 2011-04-01T04:01:36.233 回答