问答详情
源自:6-10 卸载事件(onunload)

3-5 卸载事件(onunload)

<script type="text/javascript">   
     window.onunload = onunload_message;   
     function onunload_message(){   
        alert("您确定离开该网页吗?");   
    }   
</script>
  1.  window.onunload = onunload_message; 是应该没有括号的?但没有括号无论关闭还是刷新也没有弹框,加了括号只有刷新才有弹框(在chrome下)?

  2. 在chrome下如何实现关闭前弹窗?下图是微信关闭前的页面

http://img.mukewang.com/576a175f0001310a04480155.jpg


提问者:Werk_Bicth 2016-06-22 12:46

个回答

  • atdoog
    2016-06-22 16:08:43
    已采纳

    window.onunload = onunload_message;是没有括号的,意思是关闭窗口的时候执行 onunload_message这个函数。

    浏览器包括chrome对onunload和onbeforeunload的支持不是很稳定,刚试了下微信,关的时候也没有提示

  • 慕粉18764815087
    2016-07-29 12:11:24

    function onunload_message()
    {return "返回值" ;
    }
    window.onbeforeunload = onunload_message();
    alert(window.onbeforeonload);


    我们的这个window.onbeforeunload = onunload_message;如果最后不加()就是我们要的JS事件触发后,执行右边函数。

    如果加了(),意思就是将右边这个函数的返回值赋值给左边的window.onbeforeunload。所以页面一开始就会执行右边的代码将这个值算出来。我的代码后边加了alert,将这个值显示出来证明了我的说法。


  • 慕粉18764815087
    2016-07-29 12:10:33


    function onunload_message()

    {return "返回值" ;

    }

    window.onbeforeunload = onunload_message();

    alert(window.onbeforeonload);

    我们的这个window.onbeforeunload = onunload_message;如果最后不加()就是我们要的JS事件触发后,执行右边函数。

    如果加了(),意思就是将右边这个函数的返回值赋值给左边的window.onbeforeunload。所以页面一开始就会执行右边的代码将这个值算出来。我的代码后边加了alert,将这个值显示出来证明了我的说法。


  • dz64182
    2016-06-22 16:39:38

    兼容的问题

  • atdoog
    2016-06-22 16:26:44

    window.onbeforeunload = onunload_message;

    function onunload_message() {

    alert("您确定离开该网页吗?");

    return "您确定离开该网页吗?" ;

    }

    试试这个