我试图找出一种方法来触发引导模式,当用户导航离开我的网站时,而不是单个页面。请在此之前标记为重复,我尝试了几种不同的解决方案,主要是:Display a warning when leaving the site, not just the page
使用此解决方案,它无法按预期工作。我正在通过每个页面导航获取浏览器警报,并且应该仅在离开网站时获取它们。这是我的支持代码:
window.localLinkClicked = false;
$("a").on("click", function() {
var url = $(this).attr("href");
// check if the link is relative or to your domain
if (! /^http?:\/\/./.test(url) || /http?:\/\/app\.tendesign\.us/.test(url)) {
window.localLinkClicked = true;
}
});
window.onbeforeunload = function() {
if (window.localLinkClicked) {
alert('do stuff');// do stuff
} else {
alert('dont do stuff');// don't
}
}
我还希望用户不仅可以通过点击链接进行警告,还可以关闭浏览器标签等...
答案 0 :(得分:1)
这个剧本挑战得到了我的关注 谢谢你,桑德拉,在一个无聊的星期一晚上给了我一个有趣的代码时间的机会。
首先,我想到了(因为我已经在某个地方读过它......我不知道什么时候) {{1根据浏览器的不同,事件的处理方式也不同,因此不是一个安全的选择
例如,Chrome在该事件中不允许beforeunload
或alert
,这正是您尝试过的。
但它仍然允许一个功能运行 基于this old answer,我已经为您测试过一些东西。
截至2017年,Chrome中未显示返回的消息(如2012年答案中所述)
但prompt
按预期使用默认的Chrome消息:
现在,如果触发事件的目标是内部链接,您不希望此活动绑定到return true;
事件。
我已将添加到要求中:"不在页面刷新上!"
(beforeunload
F5 )
所以这就是我现在拥有的内容,它仅在关闭标签/浏览器和外部链接上点击 (考虑完整和/或相对URL)。
我只在Chrome上测试过,我认为这是此次活动中最严重的一次 它正在工作。
此代码完全符合"Rubber Duck"
干杯!
;)
keydown