1

У меня есть iframe на моей странице, и я пытаюсь перезагрузить содержимое. Во всех остальных браузерах это достигается просто делать:Событие OnLoad в iframe не запускается в IE8 после перезагрузки

$('#myFrame').contentWindow.location.reload(true) 

Однако, это не работает в IE (тестировался в 9 и 8), и я обнаружил, что я могу получить его, чтобы перезагрузить клонирование контейнера IFrames, добавив, клон на страницу и удаления оригинального IFRAME, как показано ниже:

var pe = $(window.parent.frames['myFrame'].frameElement.parentElement); 
clonedPe = pe.clone(); 
clonedPe.insertBefore(pe); 
pe.remove(); 

проблема, что у меня есть, что на оригинальном IFRAME я имел некоторый код добавляется в событии загрузки, но это не огонь по нагрузке клонированный iframe.

Мой вопрос ... есть лучший способ перезагрузить iframe в IE - ИЛИ - как я могу получить событие onload для перезагрузки?!!

ответ

0

Если изменить источник фрейма будет перезарядить:

var pe = $(window.parent.frames['myFrame'].frameElement.parentElement); 
$.data(pe, 'src', pe.attr('src')); 
pe.attr('src', 'about:blank').attr('src', $.data(pe, 'src')); 

Вот демо: http://jsfiddle.net/4ZgKh/1/

Вы также можете связать свои события в IFRAME с помощью .delegate() поэтому обработчик события будет держать верно для любых согласующих элементов, которые вставлены в DOM после того, как обработчик событий связан:

$(document).delegate('iframe', 'load', function() {...}); 

Обратите внимание, что в JQuery 1.7 и выше, перфективный метод:

$(document).on('load', 'iframe', function() {...}); 
0

Это прекрасно работает в FF и IE9.

$('#myFrame').get(0).contentWindow.location.reload(true); 
+0

Это работает, чтобы обновить фрейм, но это та же проблема, что и раньше, в событиях загрузки не перегораживаются. – Penfold

+0

Итак, HTML-код iframe имеет событие загрузки, а в то время как HTML обновляется, загрузка не срабатывает? Чтобы быть ясным, событие загрузки находится в источнике iFrame ... можно ли это увидеть? –