Могут события, запущенные из iframe быть обработанными элементами в его родителе?

Предположим, что мне определили местоположение страницы в www.example.com/foo, и это содержит <iframe> с src="http://www.example.com/bar". Я хочу смочь запустить событие из /bar и имейте его быть услышанными /foo. Пользуясь библиотекой Prototype, я попытался делать следующее без успеха:

Element.fire (родитель, 'ns:frob');

Когда я делаю это в Firefox 3.5, я получаю следующую ошибку:

Узел не может использоваться в документе кроме того, в котором он был создан" код: "4 Строки 0

Не уверенный, если это связано с моей проблемой. Есть ли некоторый механизм защиты, в котором это предотвращает сценарии /bar от начинания событий в /foo?

12
задан TimWolla 6 December 2012 в 17:11
поделиться

3 ответа

Я еще не тестировал этот кроссбраузер, но он работает в FF.

В iFrame вы можете активировать элемент parent.document:

Event.observe(window, 'load', function() {
  parent.document.fire('custom:event');
});

, а в родительском фрейме вы можете поймать его с помощью:

document.observe('custom:event', function(event) { alert('gotcha'); });
6
ответ дан 2 December 2019 в 18:19
поделиться

События могут быть обработаны функцией определенной родительской окна, если Iframe представляет собой страницу из домена (см. Статью MDC на Та же политика происхождения ); Тем не менее, события не будут пузыми из IFrame на родительскую страницу (по крайней мере, не в моем тестах).

12
ответ дан 2 December 2019 в 18:19
поделиться

, скорее, затем поймать событие на главной странице, вы можете поймать событие в iFrame и вызовите функцию на главной странице.

<-- main page -->
function catchIt()
{
 // code here
}


<-- iframe page -->

function doIt()
{
 top.catchIt(); 
}

<a onclick="doIt();">test</a>

Я думаю, что это будет работать, но не проверил его

2
ответ дан 2 December 2019 в 18:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: