我已经搜索了几个小时,但找不到解决方案。
window.onbeforeunload = warn;
这不起作用:
function warn (e)
{
var destination = e.href;
alert(destination );
}
好的,所以要清除这些东西。如果用户单击页面本身上的链接,这很容易,因为您可以为所有链接添加一个事件处理程序 onclick 事件,但是。我想捕获地址,即用户在浏览器的 url 框中键入的内容。
我已经搜索了几个小时,但找不到解决方案。
window.onbeforeunload = warn;
这不起作用:
function warn (e)
{
var destination = e.href;
alert(destination );
}
好的,所以要清除这些东西。如果用户单击页面本身上的链接,这很容易,因为您可以为所有链接添加一个事件处理程序 onclick 事件,但是。我想捕获地址,即用户在浏览器的 url 框中键入的内容。
因为做不到。新位置是私人/敏感信息。当他们离开您的网站时,没有人希望您知道他们访问了哪些网站。
如果您只想查看链接目标,可以使用:
document.activeElement.href
但是获取地址行目的地是不可能的。
我听说过一些解决方案,如果鼠标移动到地址行,它们会触发一个事件(以警告用户有未完成的进程尚未处理),但这种黑客我永远不会做。
Kaze 的回答是一种有趣的方法,但是当页面被导航离开时查看元素焦点并不是真正可靠的。部分原因是链接点击和离开页面的导航之间存在延迟(在此期间用户可能将焦点移到其他元素,但也因为链接可能被聚焦(例如通过键盘控制,或鼠标按下-click) 而实际上并没有被用来导航离开页面。所以如果你聚焦一个链接然后关闭窗口,它会认为你在关注这个链接。
onclick
对页面上的每个链接(加上onsubmit
每个表单)进行捕获稍微更可靠,但由于延迟,仍然可能被愚弄。例如,您单击一个链接,但在新页面开始加载之前点击后退按钮(或按 Escape)。同样,如果您关闭窗口,它会认为您正在关注链接。
我想捕获地址,即用户在浏览器的 url 框中键入的内容。
绝不会发生这种情况。这是一个明显的隐私禁忌。