Добавление слушателя событий к фрейму

голоса
9

Можно ли добавить прослушиватель событий к IFRAME? Я пробовал этот код, но это не похоже на работу:

document.getElementsByTagName('iframe')[0].contentWindow.window.document.body.addEventListener('afterLayout', function(){
                console.log('works');
            });

Я также просто попытался с помощью получения элемента по идентификатору и добавление моего слушателя через фреймворк JavaScript, я использую, как это:

Ext.fly(iframeID).addListener('afterLayout', function(){ alert('test'); });

Я могу вызывать функции в IFRAME, поэтому я не думаю, что безопасность является проблемой. Есть идеи?

Задан 08/09/2009 в 15:11
источник пользователем
На других языках...                            


3 ответов

голоса
11

Я никогда не пытался обрабатывать событие «afterLayout» , но и для более браузерного кода , который вы будете использовать ( iframe.contentWindow || iframe.contentDocument) вместо iframe.contentWindow.

попробовать что-то вроде

var iframe = document.getElementsByTagName('iframe')[0],
    iDoc = iframe.contentWindow     // sometimes glamorous naming of variable
        || iframe.contentDocument;  // makes your code working :)
if (iDoc.document) {
    iDoc = iDoc.document;
    iDoc.body.addEventListener('afterLayout', function(){
                        console.log('works');
                });
};

Надеюсь, что это поможет.

Ответил 12/09/2009 в 22:58
источник пользователем

голоса
4

Если вы делаете серьезную работу Iframe в Ext, вы должны смотреть на расширение пользователя ManagedIFrame:

http://www.extjs.com/forum/showthread.php?t=40961

Он имеет встроенные события и кросс-кадр обмен сообщения, а также много других преимуществ.

Ответил 08/09/2009 в 16:21
источник пользователем

голоса
2

Причины отказа могут быть: -

  1. URL-адрес, к которому IFrame направляется из другого домена в качестве контейнера, следовательно, код предотвращается блокирование сценариев междоменного.
  2. Код выполняется до того, как содержимое кадра загружается
Ответил 08/09/2009 в 15:19
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more