Каков наилучший способ перезагрузить / обновить iframe? - PullRequest
215 голосов
/ 17 сентября 2008

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

Ответы [ 21 ]

2 голосов
/ 08 февраля 2014

Рассматривали ли вы добавление в URL бессмысленного параметра строки запроса?

<iframe src="myBaseURL.com/something/" />

<script>
var i = document.getElementsById("iframe")[0],
    src = i.src,
    number = 1;

//For an update
i.src = src + "?ignoreMe=" + number;
number++;
</script>

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

2 голосов
/ 29 ноября 2011

Используйте reload для 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;
}
2 голосов
/ 01 февраля 2010

В IE8 с использованием .Net, установка iframe.src в первый раз в порядке, но установка iframe.src во второй раз не повышает page_load страницы в фрейме. Для ее решения я использовал iframe.contentDocument.location.href = "NewUrl.htm".

Откройте для себя это, когда используете jQuery ThickBox и пытаетесь открыть ту же страницу в iframe Thickbox. Затем он просто показал ранее открытую страницу.

2 голосов
/ 09 мая 2014

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

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

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

$('#iframeID',parent.document).attr('src',$('#iframeID',parent.document).attr('src'));
2 голосов
/ 24 мая 2018

Теперь, чтобы сделать это на Chrome 66, попробуйте это:

const reloadIframe = (iframeId) => {
    const el = document.getElementById(iframeId)
    const src = el.src
    el.src = ''
    setTimeout(() => {
        el.src = src
    })
}
1 голос
/ 23 июля 2013

Если все вышеперечисленное не работает для вас:

window.location.reload();

Это по какой-то причине обновило мой iframe вместо всего скрипта. Может быть, потому что он помещен в сам фрейм, а все эти решения getElemntById работают, когда вы пытаетесь обновить фрейм из другого фрейма?

Или я не совсем понимаю это и говорю тарабарщину, в любом случае, это сработало для меня как шарм:)

1 голос
/ 01 мая 2017

Использование 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();" />
0 голосов
/ 07 января 2018

Другое решение.

const frame = document.getElementById("my-iframe");

frame.parentNode.replaceChild(frame.cloneNode(), frame);
0 голосов
/ 22 мая 2012
<script type="text/javascript">
  top.frames['DetailFrame'].location = top.frames['DetailFrame'].location;
</script> 
0 голосов
/ 13 сентября 2017

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

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