onunload事件不觸發的探索

 

   若是現有一需求:瀏覽器頁面關閉時彈出一個對話框,詢問是否要退出,應該怎麼作呢?html

    可用onunload事件來實現,該事件會在刷新和關閉頁面時執行segmentfault

  

  我用以下3種方法綁定該事件,但全部主流瀏覽器都沒法在關閉頁面時執行該事件
瀏覽器

<body onunload="alert('肯定離開嗎?')">

 

<script>
      window.onunload = function() {
            alert("肯定離開嗎?");
      }
</script>

 

<body onunload="hello()">
        <div>歡迎學習JavaScript</div>
        
        <script>
            function hello() {
                alert("肯定離開嗎?");
            }
        </script>
 </body>

 

    後來調試發現,onunload事件已正常執行,但onunload是在銷燬頁面對象後觸發的 ,此時alert方法已經被鎖定銷燬,因此不能彈出提示框學習

   

    參考:https://segmentfault.com/q/1010000014717573測試

 

 

   那是否是就沒法實現該需求了呢?其實官方提供了另外一個方法 onbeforeunloadui

       該方法能讓咱們點擊關閉頁面時,在頁面即將關閉以前執行相應的操做spa

  Demo調試

<!DOCTYPE HTML>
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title> 卸載事件 </title>

    </head>

    <body>
        <div>歡迎學習JavaScript</div>

        <script>
            window.onbeforeunload = function(e) {
                e = e || window.event;

                // 兼容IE8和Firefox 4以前的版本
                if(e) {
                    e.returnValue = '肯定要關閉該頁面嗎?';
                }

                return '肯定要關閉該頁面嗎?';
            };
        </script>
    </body>

</html>

 

  注:① 經測試,IE,edge,safari刷新和關閉頁面都會彈出相應提示;code

    ② 火狐,谷歌,360極速刷新能彈出,關閉頁面時沒法彈出,而且彈出框不是咱們自定義的內容htm

 

  附:補充2個可能你會問到的問題,而這2個問題官方已經給出了答案

     問題一:爲何有些瀏覽器沒法彈出提示框

    

        問題二:爲何有些瀏覽器在關閉頁面時彈出的提示框內容不是咱們自定義的

    

相關文章
相關標籤/搜索