ページの読み込み中にiframeを停止する方法はJavaScriptにありますか?これを行う必要がある理由は、Webサーバーから(Cometスタイルのメカニズムを介して)バックグラウンドのiframeストリーミングデータがあり、接続を自由に切断できる必要があるためです。
どんなアイデアでも大歓迎です。
FireFox/Safari/Chromeの場合、window.stop()を使用できます。
window.frames[0].stop()
IEの場合、document.execCommand( 'Stop')でも同じことができます。
window.frames[0].document.execCommand('Stop')
クロスブラウザソリューションの場合、次のものを使用できます。
if (navigator.appName == 'Microsoft Internet Explorer') {
window.frames[0].document.execCommand('Stop');
} else {
window.frames[0].stop();
}
コード全体は次のようになります(unclenortonの行に角かっこがありませんでした)
if (typeof (window.frames[0].stop) === 'undefined'){
//Internet Explorer code
setTimeout(function() {window.frames[0].document.execCommand('Stop');},1000);
}else{
//Other browsers
setTimeout(function() {window.frames[0].stop();},1000);
}
単に、
document.getElementById("myiframe").src = '';
要素への参照しかない場合は、.contentX
を使用してdocument
/window
を取得し、受け入れられた回答を実行する必要があります。
動的に追加されたiframe要素には、iframeに実際にドキュメントがあることを確認することも必要です。
function stopIframe(element) {
var doc = element.contentDocument;
//iframes wont have a document if they aren't loading/loaded
//check so JS wont throw
if (!doc)
return;
//try for modern browsers
if (doc.defaultView.stop)
doc.defaultView.stop();
//fallback for IE
else
doc.execCommand('Stop');
}
1)ロードしたくないiframeまたはimgを取得します。
let myIframe = document.getElementById('my-iframe')
2)次に、src属性をabout.blankに置き換えることができます。
myIframe.src = 'about:blank'
それで全部です。
何らかのイベントが発生したときに機能でiframeまたは画像を一度にロードしたい場合は、src変数を dataset に格納するだけです。
myIframe.dataset.srcBackup = myIframe.src
// then replace by about blank
myIframe.src = 'about:blank'
これで、必要なときに簡単に使用できます。
myIframe.src = myIframe.dataset.srcBackup