根据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

伪协议触发onbeforeunload的更多相关文章

  1. A标签使用javascript:伪协议

    一.前言 今天,遇到一个别人挖的坑,问题是这样的. 做了一个列表页,可以筛选数据,有很多筛条件.主要是有input复选框和<a>标签两种.如图: 其中房价的筛选条件使用<a>标 ...

  2. <a>标签中的href伪协议 标签: html 2016-12-24 22:38 365人阅读 评论(0)

    <a id="jsPswEdit" class="set-item" href="javascript:;">修改密码</ ...

  3. 【javascript 伪协议】小结

    [javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...

  4. PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox

    PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encod ...

  5. 【JavaScript】javascript中伪协议(javascript:)使用探讨

    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...

  6. javascript 伪协议

    [javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...

  7. 在页面关闭或者刷新的时候触发 onbeforeunload

    该实例演示了如何使用 HTML DOM 向 body 元素添加 "onbeforeunload" 事件. 关闭当前窗口,按下 F5 或点击以下链接触发 onbeforeunload ...

  8. JavaScript中伪协议 javascript:研究

    将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...

  9. CTF 文件包含与伪协议

    正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...

随机推荐

  1. 使用APMServ本地搭建多个网站

    October 27, 2014 使用APMServ本地搭建多个网站教程 把我写好的代码直接粘贴到 httpd.conf 文件的末尾.然后保存就可以了.代码如下: <VirtualHost *: ...

  2. 关于ubuntu 系统

    1. ubuntu怎么卸载自带的软件中心?sudo apt-get remove software-center 2. 重新安装ubuntu软件中心!sudo apt-get install --re ...

  3. (转载)lib 和 dll 的区别、生成以及使用详解

    简单地讲: 第一:.DLL是动态链接库,而.LIB是静态链接库dll是个编译好的程序,调用时可以直接调用其中的函数,不参加工程的编译. 而lib应该说是一个程序集, 只是把一些相应的函数总结在一起, ...

  4. Okhttp3日志采集功能

    原文地址以示尊重:http://www.jianshu.com/p/d836271b1ae4 日志采集是一个APP必备的功能,可以方便开发人员快速定位问题,解决问题,那么我们在使用okhttp的时候应 ...

  5. pcduino通过sd卡刷系统

    1.登录到pcduino的官网,下载相应的文件. 下载第一个kernel和后面那个ubuntu. 2.将SD卡插入到电脑上,运行下面这个软件: 那个盘符就是你的SD卡的盘符,选择卡量产,镜像文件选上面 ...

  6. android手机端保存xml数据

    1.前面写的这个不能继续插入数据,今天补上,当文件不存在的时候就创建,存在就直接往里面添加数据. 2.代码如下: <pre name="code" class="j ...

  7. Altium Designer 覆铜时过孔连接形式的设置——只将过孔连接设置为Direct Connect

    Altium Designer 在PCB覆铜时,所有的过孔和焊盘都是十字连接即Relief Connect连接的,没有像PROTEL 99SE一样只有接地的焊盘才是十字连接而过孔是直接连接的. 如下图 ...

  8. 工控主板对ISO7816智能卡标准的支持

    ISO7816是一套协议标准,这套协议不仅规定了智能IC卡的机械电气特性,而且还规定了智能IC卡的应用方法.智能IC卡的主要用途可归为身份识别.支付安全.加密/解密和信息存储四个方面.智能IC卡已经广 ...

  9. Windows Azure 存储管理器 (2014)

     Windows Azure存储用户经常希望能够在"管理器"中查看他们的数据,管理器指的是一款可用于显示存储帐户数据的工具.我们之前提供了我们所知的存储管理器列表.在本文中,我 ...

  10. 按每k个结点反转链表

    //按每k个结点反转链表 Node* turn_k(Node* head,int n,int k) { Node* p=head; ;t<k;t++) p=p->next; //为了获取最 ...