离开网站而不是页面时,jquery卸载

时间:2017-02-27 23:48:14

标签: javascript jquery html twitter-bootstrap

我试图找出一种方法来触发引导模式,当用户导航离开我的网站时,而不是单个页面。请在此之前标记为重复,我尝试了几种不同的解决方案,主要是: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
    }
}

我还希望用户不仅可以通过点击链接进行警告,还可以关闭浏览器标签等...

1 个答案:

答案 0 :(得分:1)

这个剧本挑战得到了我的关注 谢谢你,桑德拉,在一个无聊的星期一晚上给了我一个有趣的代码时间的机会。

首先,我想到了(因为我已经在某个地方读过它......我不知道什么时候) {{1根据浏览器的不同,事件的处理方式也不同,因此不是一个安全的选择 例如,Chrome在该事件中不允许beforeunloadalert,这正是您尝试过的。

但它仍然允许一个功能运行 基于this old answer,我已经为您测试过一些东西。

截至2017年,Chrome中未显示返回的消息(如2012年答案中所述) 但prompt按预期使用默认的Chrome消息:

enter image description here

现在,如果触发事件的目标是内部链接,您不希望此活动绑定到return true;事件。

我已将添加到要求中:"不在页面刷新上!"
beforeunload F5

好。

所以这就是我现在拥有的内容,它仅在关闭标签/浏览器和外部链接上点击 (考虑完整和/或相对URL)。

我只在Chrome上测试过,我认为这是此次活动中最严重的一次 它正在工作。

此代码完全符合"Rubber Duck" 干杯!
;)

keydown