使用YUI在iframe与其父级之间触发事件

时间:2010-09-28 10:46:59

标签: javascript iframe javascript-events yui3

我有一个iFrame正在触发一个我希望父页面可以拾取的事件。基本上the inverse of this question。我可以在iFrame中拾取事件,所以我知道它正在触发,但父母没有任何事情发生。

我正在使用YUI 3,因此任何基于此的答案都会得到双重赞许,但所有帮助都得到了很好的接受。

由于

罗布

1 个答案:

答案 0 :(得分: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
    });