javascript описание jquery - Каков наилучший способ перезагрузить / обновить iframe?
Я хотел бы перезагрузить <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()