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

Window close, using link or typing URL?

本文关键字:URL 窗口 链接      更新时间:2023-09-26

有一个非常简单的问题,我还没有找到任何解决方案。有什么方法可以区分吗:

  1. 使用链接离开浏览器窗口(选项卡)
  2. 在浏览器的URL栏中键入另一个URL
  3. 关闭选项卡或浏览器窗口

我需要为这些操作绑定不同的Javascript代码。我知道我可以通过设置特殊类来过滤所有链接,但有什么通用的吗?

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

然而,您可以使用onbeforeunload事件来做一些事情:

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

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

您无法区分键入新URL还是关闭窗口,但您可以在所有链接中添加一个点击事件处理程序,以检查用户是否将使用链接离开:

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(请注意,此事件也将处理外部链接,因此如果使用以前的解决方案,请注意不要处理两次)。​