javascript - 浏览器/选项卡关闭检测时发出警报

时间:2013-10-31 13:50:11

标签: javascript jquery window alert

我的代码在点击链接刷新关闭标签时发出警报。
但我需要在关闭窗口(标签)上提醒 。怎么做?我的网站上有很多外部和内部链接。

<html>
    <head>
        <script type="text/javascript">
            window.onbeforeunload = function (e) {
                var e = e || window.event;
                //IE & Firefox
                if (e) {
                    e.returnValue = 'Are you sure?';
                }
                // For Safari
                 return 'Are you sure?';
            };
        </script>
    </head>
    <body>

        <!-- this will ask for confirmation: -->
       <!-- I need to alert for external links. -->
        <a href="http://google.com">external link</a>


       <!-- this will ask for confirmation: -->
<!-- I don't need to alert for local links in my web site -->
            <a href="about.html">internal link</a>
    </body>
</html>

1 个答案:

答案 0 :(得分:-1)

document.activeElement在这种情况下非常方便,它将等于您单击以卸载页面的链接。然后,您可以检查链接的href属性是否包含您的主机名。 codepen.io的一个例子是(demo here):

window.onbeforeunload = function (e) {
  var e = e || window.event;
  var element = document.activeElement;

  if(element.tagName === 'A' && element.href.indexOf('codepen.io/') === -1) {
    //IE & Firefox
    if (e) {
      e.returnValue = 'Are you sure?';
    }
    // For Safari
    return 'Are you sure?';
  }
};

我最初的想法是为http://https://做一个正则表达式来查看路径是否是相对的,但看起来浏览器基本上将相对路径转换为绝对路径并在前面加上http ...

如果您想编写此代码以使其更具通用性,您可以使用location.hostname而不是静态键入主机名来进行比较。

最后,您的milage可能会因IE而异,具体取决于您希望支持上述代码的IE可能需要更新。现在的趋势是支持IE11 +:)