66

我已经搜索了几个小时,但我找不到解决方案。

window.onbeforeunload = warn;

这不起作用:

function warn (e) 
{ 
   var destination = e.href;
   alert(destination );
}

好的,所以要清除这些东西。如果用户单击页面本身的链接,这很容易,因为您可以为所有链接添加事件处理程序 onclick 事件,但是。我想获取地址,即用户在浏览器的 url 框中键入的内容。

4

3 回答 3

68

因为做不到。新位置是私人/敏感信息。没有人希望您知道他们离开您的网站时访问了哪些网站。

于 2009-11-06T10:32:02.577 回答
37

如果您只想查看链接目的地,您可以使用:

document.activeElement.href 

但是获取地址行目的地是不可能的。

我听说过解决方案,如果鼠标向上移动到地址行,他们会触发一个事件(以警告用户有未完成的进程尚未处理),但我永远不会这样做。

于 2014-01-08T11:41:27.950 回答
19

Kaze 的回答是一种有趣的方法,但是当页面导航离开时查看元素焦点并不是很可靠。部分原因是链接点击和离开页面的导航之间存在延迟(在此期间用户可能会将焦点移到其他元素,但也因为链接可能被聚焦(例如,通过键盘控制或 mousedown-without -click) 并没有实际用于离开页面。因此,如果您聚焦一个链接然后关闭窗口,它会认为您正在跟踪该链接。

捕获onclick页面上的每个链接(加上onsubmit每个表单)稍微可靠一些,但由于延迟仍然可能被愚弄。例如,您单击一个链接,但在新页面开始加载之前点击后退按钮(或按 Escape)。同样,如果您关闭窗口,它会认为您正在关注链接。

我想获取地址,即用户在浏览器的 url 框中键入的内容。

永远不会发生这种情况。这是一个明显的隐私禁忌。

于 2009-11-06T11:31:27.563 回答