窗口关闭,使用链接或键入URL?

时间:2012-02-10 20:10:13

标签: javascript browser window dom-events

有一个非常简单的问题我没有找到解决它的任何解决方案。有没有办法区分

  1. 离开浏览器窗口(标签页)使用链接
  2. 在浏览器的网址栏中输入另一个网址
  3. 关闭标签页或浏览器窗口
  4. 我需要为这些操作绑定不同的Javascript代码。我知道我可以通过设置特殊类来过滤所有链接,但是有什么工作吗?

2 个答案:

答案 0 :(得分:2)

无法检测到浏览器的外部事件,例如用户点击浏览器的关闭按钮或从菜单中选择退出或在地址栏中输入新网址。

但是,您可以使用onbeforeunload事件来做某事:

window.onbeforeunload = function(){
  // do something
};

当用户通过点击页面链接,关闭浏览器或以任何方式离开当前页面导航到其他页面时,将触发此操作。

答案 1 :(得分:1)

您无法区分键入新网址或关闭窗口,但您可以向所有链接添加点击事件处理程序,以检查用户是否即将使用链接离开:

var links = document.getElementsByTagName("a")​;
for(var i = 0; i < links.length; i++) {
    links[i].onclick = function() {
        if (this.href.test(/^http[s]?:\/\//))
            //external link clicked
    };
}

对于其他人,您可以使用window.onbeforeunload(请注意,此事件也将处理外部链接,因此如果您使用以前的解决方案,请注意不要处理它们两次)。