如何获取onbeforeunload事件的目标URL?

mis*_*nyo 52 javascript url javascript-events onunload

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

window.onbeforeunload = warn;
Run Code Online (Sandbox Code Playgroud)

这不起作用:

function warn (e) 
{ 
   var destination = e.href;
   alert(destination );
}
Run Code Online (Sandbox Code Playgroud)

好的,所以要清除事情.如果用户单击页面本身上的链接,则很容易,因为您可以将事件处理程序添加到所有链接onclick事件,但是.我想抓住地址,用户在浏览器的网址框中输入的内容.

Mic*_*len 65

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

  • 我认为你的问题有问题,如果你去自己网站的页面,为什么要使用onbeforeonload?这是没有意义的.Misnyo,你能澄清你想要的吗? (2认同)
  • @MichelvanEngelen - b/c 也许你想触发一个 CSS 加载屏幕,让用户知道他已经准备好导航到某个地方,他们确实点击了一个链接并且正在发生一些事情(使网站感觉更灵敏,尤其是当它需要一会儿导航到另一个页面) (2认同)

Esp*_*tad 22

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

document.activeElement.href 
Run Code Online (Sandbox Code Playgroud)

但是无法获得地址线目的地.

我听说过如果鼠标向上移动到地址线时触发事件的解决方案(警告用户有未完成的未完成的进程),但这种黑客我永远不会做.


bob*_*nce 19

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

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

我想抓住地址,用户在浏览器的网址框中输入的内容.

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

  • 但为什么你这样做.如果您的答案不完全正确,请不要担心,人们有机会通过投票来判断.但它对其他人来说仍然有用.我本来希望看到你的"最后关注"方法. (12认同)
  • 哦,来吧,当你围绕它建立所有这些金光闪闪的时候,你不能指望人们将观察视为中立的同行评审.他们故意试图把这个与求职等联系在一起.每个人都会犯错误,但如果有的话,你真的只是把你最精彩的那些放在你的简历上.;-) (7认同)