2016-09-23 11 views
0

私は小さなウェブアプリケーションで作業しており、ユーザーがブラウザを更新した後で確認ダイアログを表示する必要があります。私はwindow.onbeforeunload = function() { ...}を使用してそれを行います。問題は、リフレッシュ時だけでなく、サブミット後でも呼び出されるということです。私は質問がある:window.onbeforeunloadがリフレッシュまたはサブミット要素によって引き起こされたとすれば何とか見つかることができますか?JS:誰がwindow.onbeforeunload()を引き起こしたかを調べる方法:F5またはsubmit?

+0

上記の2つのオプションは、「onbeforeunload」がトリガされる唯一の2つの方法ではありません。 – nnnnnn

+0

F5の確認ダイアログのみを表示したい - 投稿しない –

+0

beforeunloadハンドラを削除するsubmitイベントハンドラを追加します。 – nnnnnn

答えて

0

ページから離れてナビゲートし、状態を管理する識別子を持つさまざまなイベントのイベントハンドラを記述できます。次に、onbeforepageunload関数でこの識別子を使用して、実行するアクションを実行できます。次に、入力タイプsubmitを探して識別子を設定するコード例を示します。同様に、アンカータグなどを持つことができます。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 

</head> 
<body> 
<form action=""> 
    <input type="submit" value="Submit"> 
</form> 
</body> 
    <script> 
    var submit_was_clicked = false; 

    window.addEventListener("beforeunload", function (event) { 
     if(submit_was_clicked){ 
     console.log('submit button clicked') 
     }else{ 
     console.log('on before unload'); 
     } 
    }); 

    document.addEventListener("click", function(e) { 
     if (e.target.type.toLowerCase() === 'submit') { 
      submit_was_clicked = true; 
     } 
    }, true); 
    </script> 
</html> 
関連する問題