检测为什么要运行beforeunload

时间:2019-09-12 12:56:15

标签: javascript jquery html ajax

每次用户离开站点时,我都试图在服务器上运行bat。
我通过使用beforeunload使该部分正常工作,当然,每次页面卸载时都会触发该事件。
因此,当用户单击链接时,我添加了一个标志,它也起作用。
现在只有前进/后退和重新加载才能触发蝙蝠,我不确定如何防止这种情况。

我找到了此解决方案https://stackoverflow.com/a/36444134/9552448,但它并不总是有效。
仅当页面是通过后退/前进或重新加载来加载时才有效,而通过链接加载时不起作用。

这是我的JavaScript:

<script language="JavaScript">
    var linkClicked = 0;
    $("a").click(function(){
        linkClicked = 1;
    });
    window.addEventListener('beforeunload', function (e) {
        if (linkClicked == 0) {
            var xhttp = new XMLHttpRequest();
            if (window.performance) {
              console.info("window.performance works fine on this browser");
            }
            if (window.performance.navigation.type == 1) {
                console.info("Used reload");
            }
            else if (window.performance.navigation.type == 2) {
                console.info("Used backward/forward");
            }
            else {
                xhttp.open("GET", "/bat/", true);
                xhttp.send();
            }
        }
    });
</script>

如果您需要其他信息,请告诉我。
任何建议仅在用户离开时才运行蝙蝠的建议。
预先感谢您的帮助。

0 个答案:

没有答案