2011-01-05 5 views
17

Почему следующее не работает:триггерные события в родительском окне IFrame в

//iframe: 
window.parent.$(document).trigger('complete'); 

//parent window: 
$(document).bind('complete', function(){ 
    alert('Complete'); 
}); 

в то время как следующее работает:

//iframe: 
window.parent.$('body').trigger('complete'); 

//parent window: 
$('body').bind('complete', function(){ 
    alert('Complete'); 
}); 

?

+0

Возможный дубликат [события нажатия триггера в родительском окне iframe] (http://stackoverflow.com/questions/3521947/trigger-click-event-in-iframe-parent-window) –

ответ

36

Как отслеживать события, вы можете запускать или принимать события только в одном документе.

попробовать

window.parent.$(window.parent.document).trigger('complete'); 
+0

У меня, по сути, такая же проблема с YUI3, любые советы? – danjah

+0

@ Danjah Я никогда раньше не использовал YUI, поэтому я не уверен, что смогу помочь. Однако вполне возможно, что аналогичный подход можно использовать: window.parent.YUI.use ('node-event-simulate', function (Y) {Y.one (window.parent.document) .simulate ('click ');}); Тем не менее, вы можете просто захотеть выставить метод для родителя, чтобы выполнить требуемый запуск от имени вашего предложения iframe, ala @ Ken Redler. – HackedByChinese

+0

Alrighty, спасибо большое - я определенно дам это bash, я был немного осторожен, чтобы начать имитировать события, прежде чем пытаться вызвать существующих обработчиков ... но мне, возможно, придется. – danjah

10

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

// In Parent 
function triggerComplete() { 
    $(document).trigger('complete'); 
} 

// In iFrame 
window.parent.triggerComplete(); 
-5

проверить это решение, его очень сложно

top.frames [ 'frame_name'] document.getElementById ('Обработка') style.display = 'ни'..;

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