1

観測シナリオを働いていないONUNLOAD:が正しく

1)ブラウザを閉じるときは、beforeunloadイベントが発生しますがunloadイベントは発生しません。

2)タブを閉じると、beforeunloadイベントとunloadイベントの両方が発生します。

質問:ブラウザを閉じるとき

どのように私はunload方法を発射することができますか?

コード:

var inFormOrLink = false; 
    var flag = false; 

    $(document).ready(function() { 
     $(window).bind("beforeunload", function() { 
       return "You are about to close the window"; 
     }); 
     $(window).on("unload", function() { 
      if (!inFormOrLink) 
       window.open('../Account/Login?admin=admin', "_blank"); 
     }); 
    }); 

    $(function() { 
     $("a").click(function() { 

      if (!flag) { 
       inFormOrLink = true; 
       $(window).unbind('beforeunload'); 
       $(window).unbind('unload'); 
      } 
      else { 
       // inFormOrLink = false; 
       $(window).bind('beforeunload'); 
       $(window).bind('unload'); 
      } 
     }); 

     $(".btn").click(function() { 

      if (!flag) { 
       inFormOrLink = true; 
       $(window).unbind('beforeunload'); 
       $(window).unbind('unload'); 
      } 
      else { 
       inFormOrLink = false; 
       flag = false; 
       $(window).bind('beforeunload'); 
       $(window).bind('unload'); 
      } 

     }); 
     $("body").keydown(function (e) { 
      if (e.which == 116 || e.which == 117) { 
       inFormOrLink = true; 
      } 
      else if (e.ctrlKey && e.keyCode == 82) { 
       inFormOrLink = true; 
      } 
      else if (e.which == 8) { 
       var tag = e.target.tagName.toLowerCase(); 
       inFormOrLink = true; 
       if (tag != "input") { 
        e.preventDefault(); 
       } 
      } 
      else { 
       inFormOrLink = false; 
       $(window).bind('unload'); 
      } 
     }); 
    }); 

答えて

0

onunloadイベントは、理論的にはあなたが言及した場合に実行する必要がありますが、しかし、そこに多くのブラウザであり、それぞれが別のチームによって実装されます。あなたはいくつかのブラウザでバグを観察したので、unloadの代わりにbeforeunloadにイベントハンドラを付けることをお勧めします。その場合は、問題を回避します。もう1つの可能性は、

$(window).unload(); 
のように unloadイベントを実行することです