Прослушивание событий внутри iFrame

Итак, у меня есть главная страница (a) и страница предварительного просмотра (b), встроенная в главную страницу через iframe. Страница (b) запускает специальное событие:

$(document).trigger('preview.compiled');

теперь я хочу, чтобы главная страница (a) прослушала это событие и что-то сделала:

$('iframe').contents().on('preview.compiled', function() {
    console.log('Success');
});

однако, приведенный выше код не работает. Есть идеи?

2 ответов


в jQuery trigger() только вызывает обратные вызовы, которые были добавлены через .on() своего собственного экземпляра. Таким образом, jQuery в вашем iframe будет запускать только обратные вызовы, которые были установлены с помощью этого экземпляра, а не через экземпляр jQuery вашей главной страницы.

можно назвать dispatchEvent() передача в свой собственный объект события

document.dispatchEvent(new Event('preview.compiled'));

или может вместо этого использовать


попробуйте parent.$('body').trigger ('предварительный просмотр.compiled');