12

2 つのページがあるとします。それらの1つは、iframeとして内部に別のものを含みます。親ページで onbeforeunload イベントをサブスクライブすると、iframe にフォーカスがあるときにタブを閉じても、このイベントはトリガーされません。ここに書かれているようにバグだと思います: Google Chromeの問題

しかし、たとえば、Google ドキュメントがこの状況を処理すると述べました。誰でも私に解決策を教えてもらえますか? サードパーティの HTML エディター (WYSIWYG) であるため、iframe コンテンツに実際にアクセスできないことに注意してください。

4

3 に答える 3

4

古い質問だと思いますが、検索を通じてここに来る人々を助けるためだけです:

バグはここで修正されています

Chrome 10 以降、この問題は修正されるはずです。

ここに関連するバグがあります

要するに、それでもフレームで " " を起動できない場合は、JavaScriptなどonbeforeunloadによるコンテンツの変更が原因である可能性があります。document.open document.write document.close

于 2012-01-26T07:45:20.620 に答える
0

iframe の URL を「about:blank」に変更することもできます。例:

$("#myFrameId")[0].src = "about:blank";

これにより、クロムは iframe 内に含まれるウィンドウを「きれいに」閉じるようになります。

親ウィンドウではなく iframe のみを閉じたい場合は、「onbeforeunload」にアタッチしたハンドラーを実行するのに十分な時間をクロムに与える必要があります。

于 2012-02-10T16:03:40.973 に答える
0

以下のコードは、すべてのブラウザで機能します

if (typeof window.addEventListener != 'undefined') {
    window.addEventListener('beforeunload', test, false);
}
else if (typeof document.addEventListener != 'undefined') {
    document.addEventListener('beforeunload', test, false);
}
else if (typeof window.attachEvent != 'undefined') {
    window.attachEvent('onbeforeunload', test);
}

else {
    if (typeof window.onbeforeunload == 'function') {
        window.onbeforeunload = function() {
            test();
        };
    }
    else {
        window.onbeforeunload = test;
    }
}

function test(){ alert('working');}

これを一度試してみてください...

于 2012-01-26T07:55:59.350 に答える