私はこのコードを書きました
_function winUnload() {
alert("Unload Window");
MyMethod();
}
window.onunload = function() { winUnload(); }
_
このコードはIEおよびFirefoxで正常に動作しています。ただし、このコードはChromeでは動作していません。ステートメントalert("Unload Window");
とMyMethod();
は両方とも動作していません。
アンロードイベント内で、chromeで動作しないアクションがいくつかあります。アラートまたは確認ボックスはそのようなものです。
しかし、何が可能か(知る限り):
#2の例:
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
私はこれが古いことを知っていますが、Chromeを使用してアンロードを動作させる方法を見つけました
window.onbeforeunload = function () {
myFunction();
};
アーミンの答えはとても便利です、ありがとう。 #2は、ほとんどのブラウザで機能するアンロードイベントを設定する際に知っておくべき最も重要なことです。alert()またはconfirm()はできませんが、文字列を返すと、confirmモーダルが生成されます。
しかし、文字列を返すだけでも、Mootoolsに固有のクロスブラウザの問題があることがわかりました(このインスタンスではバージョン1.4.5を使用しています)。このMootools固有の実装はFirefoxでうまく機能しましたが、ChromeまたはSafariで確認ポップアップが表示されませんでした:
window.addEvent("beforeunload", function() {
return "Are you sure you want to leave this page?";
});
したがって、onbeforeonloadイベントをブラウザー間で機能させるには、JavaScriptネイティブコールを使用する必要がありました。
window.onbeforeunload = function() {
return "Are you sure you want to leave this page?";
}
なぜそうなのか、またはMootoolsの以降のバージョンで修正されているのかはわかりません。
Chrome and Safari
に対してpagehideイベントを使用しようとする場合があります。
これらのリンクを確認してください:
pageShowおよびpageHideのブラウザサポートを検出する方法
http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
クロムのwindow.onunloadの代わりにwindow.onbeforeunloadを試してください。また、body>タグからonbeforeunloadを呼び出すこともできます。クロム。
ただし、chromeブラウザのアンロード機能に問題があります。確認してください。
location.hrefはchrome body/window unloadイベントを介して呼び出されたとき)では機能しません
ありがとう、Nived
Onloadイベントが発生しなかった場合、onunloadイベントは発生しません。残念ながら、 onloadイベントはすべてのバイナリコンテンツを待つ (例:イメージ)がロードされ、 インラインスクリプトは前に実行されます onloadイベントが発生します。 DOMContentLoaded ページが表示されると、onloadが実行される前に起動します。そして、現在は HTML 5の標準 であり、 ブラウザサポートのテスト ですが、これには<!DOCTYPE html>
(少なくともChromeでは)。ただし、DOMをアンロードするための対応するイベントが見つかりません。また、一部のブラウザでは「タブの復元」機能を実行するためにDOMを保持しているため、このような仮想イベントは機能しない場合があります。
私がこれまでに見つけた唯一の解決策は Page Visibility API で、これには<!DOCTYPE html>
。
これは動作します:
var unloadEvent = function (e) {
var confirmationMessage = "Warning: Leaving this page will result in any unsaved data being lost. Are you sure you wish to continue?";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Webkit, Safari, Chrome etc.
};
window.addEventListener("beforeunload", unloadEvent);