Событие OnLoad в iframe не запускается в IE8 после перезагрузки - PullRequest
1 голос
/ 14 декабря 2011

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

$('#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 был добавлен некоторый код в событие onload, но он не срабатываето загрузке клонированного iframe.

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Это отлично работает в FF и IE9.

$('#myFrame').get(0).contentWindow.location.reload(true);
0 голосов
/ 14 декабря 2011

Если вы измените источник iframe, он перезагрузится:

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() таким образом, обработчик события будет иметь значение true для любых соответствующих элементов, которые вставляются в DOM после привязки обработчика события:

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

Обратите внимание, что в jQuery 1.7 и выше предпочтительный метод:1012 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...