回答:
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);
編集:@Joroのコメントに従ってオブジェクト名を修正しました。
reload(true)
、あなたは、この使用します。document.getElementById('FrameID').contentWindow.location.replace(new_url);
あなたはこの簡単な方法を使うことができます
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
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は、ページがコンテンツのロードを完了する前にフレームを置き換えようとする可能性があります(したがって、古いコンテンツのロード)。回避策はまだわかりません。
ページ内に複数のiFrameがある場合、このスクリプトが役立つことがあります。特定の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」を必要な値に置き換えます。
iframeのURLが変更されない場合は、再作成できます。
iframeが同じオリジン(プロトコルスキーム、ホスト名、およびポート)からのものではない場合、iframe内の現在のURLを知ることができないため、親ウィンドウとメッセージを交換するには、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フィドル:https : //jsfiddle.net/wpb20vzx/