私は現在のページから離れようとしている場合にユーザーにアラートを表示する方法を知っていますが、表示する方法があるかどうか疑問に思っていましたこのアラートは、ウィンドウ/タブが閉じられているときのみですか? ユーザーがリンクをクリックしたときではなく、ウィンドウまたはタブが閉じられているときにのみ確認画面を表示したいと思います。ブラウザ/タブのクローズを検出する
答えて
できません。
閉じる唯一のものはonbeforeunload
イベントですが、閉じたウィンドウ/タブまたは別のページへのナビゲーションの間には(javascriptに対して)違いはありません。
フォローアップ:
私は、ページ上のすべてのアンカーにクリックハンドラをアタッチし、「ダーティ」フラグを使用することができと仮定、それは本当にハックっぽいです。 (私を許してください、簡単にするためにjqueryを使用してください):
(function(){
var closingWindow = true;
$('a').on('click', function(){
if (this.href == /* on-domain link */){
closingWindow = false;
}
});
$(window).on('beforeunload',function(){
if (closingWindow){
// your alert
}
});
})();
しかし、それはあなたとほぼ同じです。 注:他のjavascript関数でwindow.location
などを使用すると、これは役に立ちません。
この2つを区別することはできません。
window.onbeforeunload
ブラウザがリソースをアンロードする直前にトリガーされます。あなたはそれが発生する程度だことだけが、アンロードの理由を知らない:MDNから
を:
ウィンドウがそのリソース
unload
しようとしている火災イベントを。 文書は引き続き表示され、event is still cancelable
です。
私はそれを恐れていた...とにかく助けてくれてありがとう! – John
このようなことはどうですか。
- がfalseに設定されたグローバル変数を持っている(すなわち
var hasCLickedLink = false;
) すべてのリンクで
(
<a>
)、onbeforeunload
にtrue
に変数を設定し、イベントハンドラを添付し、変数の値をチェックして、リンクがクリックされているかどうかを確認します。まだ
false
の場合は、リンクをクリックしていないため、アラートを送信していません。
良い解決策ですが、前後のボタンのクリックをキャッチしません。 – BenM
events
は、確認ダイアログボックスを表示しないように明示的に指定する必要があります。
var validNavigation = 0;
function bindDOMEvents() {
// Attach the event keypress to exclude the F5 refresh
$(document).keydown(function(e)
{
var key = e.which || e.keyCode;
if (key == 116)
{
validNavigation = 1;
};
});
// Attach the event click for all links in the page
$("a").bind("click", function()
{
validNavigation = 1;
});
// Attach the event submit for all forms in the page
$("form").bind("submit", function()
{
validNavigation = 1;
});
// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function()
{
validNavigation = 1;
});
};
$(document).ready(function()
{
bindDOMEvents();
window.onbeforeunload = function() {
console.log(validNavigation);
if (validNavigation == '1')
{
console.log("No Alert.. Continue");
}
else
{
return false;
}
};
});
- 1. ブラウザタブがgwtで検出される
- 2. 同じJavaアプリケーションで複数のブラウザタブを検出する方法
- 3. javascript beforeunloadがリフレッシュとクローズを検出する
- 4. ユーザーが別のブラウザタブに切り替えると検出できますか?
- 5. Jersey SSEによるブロードキャスト:クローズ接続の検出
- 6. アプリケーションのクローズを検出するにはどうすればよいですか?
- 7. ブラウザタブの操作
- 8. は、nettyが確実にチャネルのクローズ/ディスコネクトを検出できますか?
- 9. Reactjsブラウザタブ閉じるイベント
- 10. 色でブラウザタブをハイライトする方法
- 11. Javaのイテレータをクローズする
- 12. 他のページへのブラウザのクローズ/ナビゲーションを検出してログアウトする最良の方法
- 13. ブラウザのウィンドウのクローズとタブのクローズ
- 14. 特定のブラウザタブ/ウィンドウでURLを開く
- 15. タスクバーのブラウザタブにカスタムテキストを表示
- 16. JavaScriptのブラウザタブを識別する方法はありますか?
- 17. クローズ接続を呼び出す必要がありますか?
- 18. iphoneの回転を検出するときに検出する
- 19. Scalaのクローズ
- 20. PreparedStatementsのクローズ
- 21. CallableStatementのクローズ
- 22. クローズ(ハスケル)
- 23. JDialog:親フレームのクローズを防止する
- 24. シーケンスの重複要素をクローズする
- 25. JavaScriptを使用してブラウザタブを切り替える/ブラウザを最小化することを検出しました
- 26. ブルートゥースヘッドセットのボタンの検出を検出する
- 27. シェルスクリプトの出力ストリームタイプを検出する
- 28. オーバーライドウィンドウのクローズ動作
- 29. データベースのオープンとクローズ
- 30. excelのクローズ[x]ボタン
これは私が恐れていたものです...どうもありがとうございます! – John