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