当调用window.onbeforeunload时,我可以知道页面被重定向到的位置吗?

时间:2011-03-15 06:58:26

标签: javascript javascript-events jquery

每当我添加一个事件监听器window.onbeforeunload时,我可以检查页面被重定向到的位置吗? 或至少是开发人员试图改变的东西。

以下是我真正想要的东西:

这就是我现在所做的:

$(window).bind("beforeunload",function(){
      //I do what I want here
});

现在的问题是,我想在调用document.location.href =“mailTo:*”时更改逻辑。我在调用doccument.location.href时不想做任何事情,所以我我希望我的逻辑像:

$(window).bind("beforeunload",function(){
       if(document.location.href has mailTo:)
       {
            //do nothing
       }
       else
       {
            //my old logic applies here
       }
});

1 个答案:

答案 0 :(得分:4)

您需要在网页中的Href链接中添加事件处理程序, 在onclick =他们的href上设置变量,你可以在onbeforeunload脚本中读取该变量。示例代码如下:

  var storeHref = null;
    $("a").bind("click", function(){
      storeHref = this.href;
      return true;
    });

  $(window).bind("beforeunload",function(){
       if(storeHref has mailTo:)
       {
            //do nothing
       }
       else
       {
            //my old logic applies here
       }
  });

但是,如果由于某些其他事件(例如用户在浏览器中输入新网址或使用脚本)而发生重定向,则由于安全原因,您无法检测目标。

类似: How can i get the destination url in javascript onbeforeunload event?