• 伪协议触发onbeforeunload


    根据MSDN描述,IE的onbeforeunload事件触发条件:

    简单点来说就是页面URL发生改变时触发:

    * 关闭浏览器窗口
    * 点击后退、前进、刷新、主页
    * 点击链接到新页面
    * 调用超链接的click,document.write,document.open,document.close
    * 调用window.close,window.open[_self],winodw.navigate,NavigateAndFind,location.replace,location.reload,新的location.herf,submit表单提交,form.submit

    接下来看看JavaScript伪协议触发的onbeforeunload:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    <body>
    <a href="javascript:;">我是a链接javascript:;,点我试试</a> 
    <a href="javascript:void(0);">我是a链接javascript:void(0);,点我试试</a>
    <a href="#">我是a链接#,点我试试</a>
    
    <script type="text/javascript">
      //javascript:; 和 javascript:void(0); 都触发了onbeforeunload
    window.onbeforeunload = function (e) { e = e || window.event; // 兼容IE8和Firefox 4之前的版本 if (e) { e.returnValue = '关闭提示'; } // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+ return '关闭提示'; }; </script> </body> </html>

    解决方法: 

    onbeforeunload未被标准化,各浏览器的支持与触发各有差异!
    
    避免在页面使用Javascript:;以及其他伪协议,避免重复触发onbeforeunload
  • 相关阅读:
    CentOS7设置hostname、hosts、静态IP地址、关闭防火墙
    排序算法总结对比
    Java——HashMap使用Demo
    Java——HashMap底层源码分析
    Java——LinkedList使用Demo
    laravel框架之及時更改
    laravel框架之批刪&全選&全不選&反選
    laravel框架之即點即改
    laravel框架之修改
    laravel框架之增刪改查
  • 原文地址:https://www.cnblogs.com/jununx/p/3361006.html
Copyright © 2020-2023  润新知