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

IT技术 javascript url dom-events onunload
2021-02-02 13:09:21

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

window.onbeforeunload = warn;

这不起作用:

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

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

3个回答

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

@MichelvanEngelen - 这是一个有趣的考虑。事实上,我团队中的其他人是最初提出这种行为的人,而不是我。当他第一次提出这种建议时,我有点谨慎,尤其是因为我之前并没有真正见过它。但是团队的其他成员喜欢它,我想不出它的主要问题,所以我们就这样做了。
2021-03-17 13:09:21
@MichelvanEngelen - b/c 也许你想触发一个 CSS 加载屏幕,让用户知道他已经准备好导航到某个地方,他们确实点击了一个链接并且正在发生一些事情(让网站感觉更灵敏,尤其是当它需要一会儿导航到另一个页面)
2021-03-19 13:09:21
我认为您的问题错了,如果您访问自己网站上的页面,为什么要使用 onbeforeonload?这是没有意义的。Misnyo,你能澄清一下你到底想要什么吗?
2021-03-30 13:09:21
@jbyrd,可能!但是,我觉得加载程序属于目标页面,而不是我们导航的页面。让你有更多的控制权,现在我们经常只是通过 AJAX 请求等来展示 shell 和加载数据。
2021-04-01 13:09:21
@bobince 下面的回答很有趣:stackoverflow.com/a/1687028/538387
2021-04-08 13:09:21

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

document.activeElement.href 

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

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

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

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

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

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

同意 - @KazenoKoe 请添加您的答案!
2021-03-17 13:09:21
但你为什么这样做。如果您的答案不完全正确,请不要担心,人们有机会通过投票来判断。但它仍然对其他人有用。我希望看到您的“最后一个焦点”方法。
2021-03-26 13:09:21
呵呵,@Someone,是的:“如果您的答案不完全正确,请不要担心,人们有机会通过投票来判断它。” 搞笑!... :D
2021-03-30 13:09:21
哦,拜托,当你围绕它建立所有这些金光闪闪的东西时,你不能指望人们将反对票视为中立的同行评审。他们有意将其与求职等联系起来。每个人都会犯错,但如果有的话,你真的只是把你最出色的那些放在你的简历上。;-)
2021-04-01 13:09:21