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?'; };      external link   internal link   

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

 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 + 🙂