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