2015-08-10 2 views
0

Я пытаюсь добавить прослушиватель событий для iframe, когда он загружен.добавить прослушиватель событий для iframe в Sencha

Я установил следующий код в функцию init для контроллера.

init: function(application) { 
var iframe = window.top.document.getElementsByTagName('iframe')[0]; 
if(iframe) { 
       Ext.EventManager.on(iframe.contentDocument.body, 'load', this.onload, this); 
      } 
//onload is my defined function. 

Однако функция onload не была выполнена.

Так что я попробовал другой код

var iframe = window.top.document.getElementsByTagName('iframe')[0]; 
iframe.addEventListener("load", this.onBeforeUnload, false); 

И результат тот же. Пожалуйста, сообщите надлежащим образом, чтобы добавить прослушиватель событий для iframe, когда он загружен в ExtJs.

ОБНОВЛЕНИЕ ----

Спасибо за пример. Но когда я попытался применить его к моему истинному делу, я столкнулся с некоторыми трудностями. В моем проекте, у меня есть меню, домой, нажатие каждой кнопки меню будет сделать следующие действия:

Ext.ComponentQuery.query('iframepanel"]')[0].update('<iframe src="buyitems">'); 

«/ buyitems» страница включает в себя контроллер, я уже упоминал в этом вопросе. Теперь я пытаюсь прослушивать изменения iframe (например, beforeunload). Если iframe изменен, я хотел бы выполнить функцию this.onBeforeUnload с контроллера, чтобы открыть диалоговое окно предупреждения для несохраненных данных.

Я применил ваш код в моей функции init, но все равно не могу прослушать событие beforeunload iframe.

+0

Не ваш IFrame уже загружен к тому времени вы прикрепить слушателей к нему? – Greendrake

+0

Да, я использовал отладчик для проверки, элемент iframe можно получить успешно. – user2051823

+0

Нет, я имею в виду, что, если событие 'load' уже произошло, когда вы прикрепляете к нему слушателя? – Greendrake

ответ

Смежные вопросы