События запуска между iframe и его родителем с использованием YUI - PullRequest
4 голосов
/ 28 сентября 2010

У меня есть iFrame, который запускает событие, которое я хочу, чтобы родительская страница подняла.По существу обратный этому вопросу .Я могу забрать событие внутри iFrame, так что я знаю, что оно запускается, но в родительском элементе ничего не происходит.

Я использую YUI 3, поэтому любые ответы, основанные на этом, получают двойное одобрение, но всепомощь получена.

Спасибо

Роб

1 Ответ

4 голосов
/ 01 апреля 2011

Очевидно, что события не распространяются по кадрам. Вот как я работаю над этим:

В родительском фрейме определите эту глобальную функцию:

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
    });
...