javascript описание jquery - Каков наилучший способ перезагрузить / обновить iframe?





10 Answers

document.getElementById('iframeid').src = document.getElementById('iframeid').src

Он перезагрузит iframe , даже через домены! Протестировано с помощью IE7 / 8, Firefox и Chrome.

изменить src обновление

Я хотел бы перезагрузить <iframe> с помощью JavaScript. Лучший способ, который я нашел до сих пор, - установить атрибут src iframe для себя, но это не очень чисто. Есть идеи?




window.frames['frameNameOrIndex'].location.reload();



Из-за той же политики происхождения это не будет работать при изменении iframe, указывающего на другой домен. Если вы можете настроить таргетинг на более новые браузеры, рассмотрите возможность использования обмена сообщениями с несколькими документами HTML5 . Вы просматриваете браузеры, которые поддерживают эту функцию здесь: http://caniuse.com/#feat=x-doc-messaging .

Если вы не можете использовать функциональность HTML5, вы можете следовать трюкам, изложенным здесь: http://softwareas.com/cross-domain-communication-with-iframes . Эта запись в блоге также хорошо помогает определить проблему.




Я только что столкнулся с этим в хроме, и единственное, что работало, это удаление и замена iframe. Пример:

$(".iframe_wrapper").find("iframe").remove();
var iframe = $('<iframe src="' + src + '" frameborder="0"></iframe>');
$.find(".iframe_wrapper").append(iframe);

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




Просто замена атрибута src элемента iframe в моем случае была неудовлетворительной, потому что можно было увидеть старый контент до загрузки новой страницы. Это работает лучше, если вы хотите дать мгновенную визуальную обратную связь:

var url = iframeEl.src;
iframeEl.src = 'about:blank';
setTimeout(function() {
    iframeEl.src = url;
}, 10);



Используйте перезагрузку для IE и установите src для других браузеров. (перезагрузка не работает на FF), протестированная на IE 7,8,9 и Firefox

if(navigator.appName == "Microsoft Internet Explorer"){
    window.document.getElementById('iframeId').contentWindow.location.reload(true);
}else {
    window.document.getElementById('iframeId').src = window.document.getElementById('iframeId').src;
}



Если вы используете JQuery, то есть один код строки.

$('#iframeID',window.parent.document).attr('src',$('#iframeID',window.parent.document).attr('src'));

и если вы работаете с одним и тем же родителем, тогда

$('#iframeID',parent.document).attr('src',$('#iframeID',parent.document).attr('src'));



Использование self.location.reload() перезагрузит iframe.

<iframe src="https://vivekkumar11432.wordpress.com/" width="300" height="300"></iframe>
<br><br>
<input type='button' value="Reload"  onclick="self.location.reload();" />




<script type="text/javascript">
  top.frames['DetailFrame'].location = top.frames['DetailFrame'].location;
</script> 



Для целей отладки можно было бы открыть консоль, изменив контекст выполнения на фрейм, который он хочет обновить, и выполните document.location.reload()




Related