像所有浏览器的onbeforeunload一样的函数

时间:2017-05-02 20:21:37

标签: javascript jquery

是否有可以在所有浏览器上使用的onbeforeunload函数?

window.onbeforeunload = function () {/**/}

点击我网站的链接时,我想要执行一些脚本。

目前我正在使用基于onclick事件的脚本,但这不会在下一页加载之前执行完整脚本。因此,在我的浏览器网络中,它将返回HTTP状态取消。我想要一个函数检查是否已加载此函数中的所有调用,然后加载新页面。这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试window.onunload。 但是你不能在这个回调中执行重定向。

作为解决方法,在链接上的click事件中,您可以使用Promise来执行代码,使用await以等待Promise解析,然后执行单击操作。这是一个小例子:

async function onClickFunction() {
    await new Promise(function(resolve, reject) {
        // here my code  
        resolve();


    }).then(function(data) {
        // here my link action
    });  
}  

答案 1 :(得分:0)

我建议不要使用该事件,除非您警告用户数据未保存或沿着这些行保存。

可能更好的做法是阻止导航click事件的链接的默认操作,然后执行您想要执行的操作,然后在完成后重定向浏览器。使用Jquery的示例:

$("a").click(function (e){
    //stop the link from navigating
    e.preventDefault();

  //do something

  //once something is done, navigate browser
  window.location = $(this).attr("href");
})

jsfiddle例子:

https://jsfiddle.net/wpatter6/cgh2knvm/