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 に答える