Відповіді:
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;
Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
document.getElementById('frame_id').contentDocument.location.reload(true);
Це має допомогти:
document.getElementById('FrameID').contentWindow.location.reload(true);
EDIT: Виправлено ім'я об'єкта відповідно до коментаря @ Joro.
reload(true)
document.getElementById('FrameID').contentWindow.location.replace(new_url);
за умови завантаження iframe з одного домену, ви можете це зробити, що має трохи більше сенсу:
iframe.contentWindow.location.reload();
Працює для IE, Mozzila, Chrome
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Можна скористатися цим простим методом
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
Отримав це звідси
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
Якщо він у тому самому домені, просто:
iframe.contentWindow.location.reload();
буду працювати.
Скидання атрибуту src безпосередньо:
iframe.src = iframe.src;
Скидання src з позначкою часу для завантаження кешу:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Очищення src, коли параметр рядків запиту неможливий (URI даних):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Якщо ви використовуєте хеш-контури (наприклад, mywebsite.com/#/my/url), які можуть не оновлювати кадри для переключення хеша:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
На жаль, якщо ви не використовуєте час очікування, JS може спробувати замінити кадр до того, як сторінка закінчить завантажувати вміст (таким чином завантажуючи старий вміст). Я ще не впевнений у вирішенні проблем.
Якщо у вас є кілька iFrames всередині сторінки, то цей сценарій може бути корисним. Я припускаю, що в джерелі iFrame є певне значення, яке можна використовувати для пошуку конкретної iFrame.
var iframes = document.getElementsByTagName('iframe');
var yourIframe = null
for(var i=0; i < iframes.length ;i++){
var source = iframes[i].attributes.src.nodeValue;
if(source.indexOf('/yourSorce') > -1){
yourIframe = iframes[i];
}
}
var iSource = yourIframe.attributes.src.nodeValue;
yourIframe.src = iSource;
Замініть "/ yourSource" на потрібне вам значення.
Якщо URL-адреса вашого iframe не зміниться, ви можете просто відтворити його.
Якщо ваш iframe не з того самого походження (схема протоколу, ім'я хоста та порт), ви не зможете знати поточну URL-адресу в iframe, тому вам знадобиться сценарій у документі iframe для обміну повідомленнями з його батьківським вікном ( вікно сторінки).
У документі iframe:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
На вашій сторінці:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
Ви можете скористатися цим:
Js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
Html:
`<iframe id="myFrame" src=""></iframe>`
JS Fiddle: https://jsfiddle.net/wpb20vzx/