Câu trả lời:
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);
Điều này sẽ giúp:
document.getElementById('FrameID').contentWindow.location.reload(true);
CHỈNH SỬA: Đã sửa tên đối tượng theo nhận xét của @ Joro.
reload(true)
bạn sẽ sử dụng này:document.getElementById('FrameID').contentWindow.location.replace(new_url);
với điều kiện iframe được tải từ cùng một miền, bạn có thể làm điều này, điều này có ý nghĩa hơn một chút:
iframe.contentWindow.location.reload();
Hoạt động cho IE, Mozzila, Chrome
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Bạn có thể sử dụng phương pháp đơn giản này
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
Lấy cái này từ đây
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
Nếu nó trong cùng một miền, chỉ cần:
iframe.contentWindow.location.reload();
sẽ làm việc.
Đặt lại thuộc tính src trực tiếp:
iframe.src = iframe.src;
Đặt lại src với một dấu thời gian để chặn bộ nhớ cache:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Xóa src khi tùy chọn chuỗi truy vấn không thể thực hiện được (URI dữ liệu):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Nếu bạn sử dụng đường dẫn băm (như mywebsite.com/#/my/url) có thể không làm mới khung khi chuyển đổi băm:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
Thật không may, nếu bạn không sử dụng thời gian chờ, JS có thể cố gắng thay thế khung trước khi trang tải xong nội dung (do đó tải nội dung cũ). Tôi không chắc về cách giải quyết khác.
Nếu bạn có Nhiều iFrame bên trong trang, thì tập lệnh này có thể hữu ích. Tôi cho rằng có một giá trị cụ thể trong nguồn iFrame có thể được sử dụng để tìm iFrame cụ thể.
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;
Thay thế "/ yourSource" bằng giá trị bạn cần.
Nếu URL của iframe của bạn không thay đổi, bạn chỉ có thể tạo lại nó.
Nếu iframe của bạn không có cùng nguồn gốc (lược đồ giao thức, tên máy chủ và cổng), bạn sẽ không thể biết URL hiện tại trong iframe, vì vậy bạn sẽ cần một tập lệnh trong tài liệu iframe để trao đổi thông báo với cửa sổ mẹ của nó ( cửa sổ của trang).
Trong tài liệu iframe:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
Trong trang của bạn:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
Bạn có thể sử dụng cái này:
Js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
Html:
`<iframe id="myFrame" src=""></iframe>`
JS Fiddle: https://jsfiddle.net/wpb20vzx/