web-dev-qa-db-ja.com

javascriptを使用してiframeがページをロードしないようにする

ページの読み込み中にiframeを停止する方法はJavaScriptにありますか?これを行う必要がある理由は、Webサーバーから(Cometスタイルのメカニズムを介して)バックグラウンドのiframeストリーミングデータがあり、接続を自由に切断できる必要があるためです。

どんなアイデアでも大歓迎です。

21
Konrad

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();
}
32

コード全体は次のようになります(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);
}
13
Alex

単に、

document.getElementById("myiframe").src = '';
1
devside

要素への参照しかない場合は、.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');
}
0
Hashbrown

非常に簡単:

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
0
CommonSenseCode