【问题标题】:How can I get the destination URL for the onbeforeunload event?如何获取 onbeforeunload 事件的目标 URL?
【发布时间】:2010-12-13 18:55:12
【问题描述】:

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

window.onbeforeunload = warn;

这不起作用:

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

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

【问题讨论】:

  • 我在数据处理网站上工作,在用户离开页面之前,我确保所有数据都符合要求。 onbeforeunload 事件很有用,但由于浏览器处理它的方式很麻烦。我无法阻止用户离开页面,但很高兴知道他们要去哪里。碰巧的是,就我而言,我确实知道,因为它是一个站点生成的重定向,所以我可以设置一个会话变量。

标签: javascript url dom-events onunload


【解决方案1】:

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

document.activeElement.href 

但无法获取地址行目的地。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我想你问错了,如果你去你自己网站上的一个页面,你为什么要使用onbeforeonload?这是没有意义的。 Misnyo,你能说清楚你到底想要什么吗?
    • @bobince 下面的回答很有趣:stackoverflow.com/a/1687028/538387
    • @MichelvanEngelen - b/c 也许你想触发一个 CSS 加载屏幕,让用户知道他已经准备好导航到某个地方,他们确实点击了一个链接并且正在发生一些事情(使网站感觉更灵敏,尤其是在需要一段时间才能导航到另一个页面时)
    • @jbyrd,可能!但是,我觉得加载器属于目标页面,而不是我们导航的页面。让您有更多的控制权,现在我们通常只是通过 AJAX 请求等呈现 shell 和加载数据。
    • @MichelvanEngelen - 这是一个有趣的考虑。事实上,我团队中的其他人是最初提出这种行为的人,而不是我。当他第一次提出这种行为时,我有点警惕,尤其是因为我以前从未真正见过它。但是团队的其他人都喜欢它,我想不出它有什么大问题,所以我们就去了。
    【解决方案3】:

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

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

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

    这是不可能发生的。这是一个明显的隐私禁忌。

    【讨论】:

    • 但是你为什么这样做。如果您的答案不完全正确,请不要担心,人们有机会通过投票来判断它。但它仍然对其他人有用。我希望看到您的“最后关注”方法。
    • 同意 - @KazenoKoe 请回复您的答案!
    • 哦,拜托,当您围绕它构建所有这些闪光点时,您不能指望人们将拒绝投票视为中立的同行评审。他们故意试图将其与求职等联系起来。每个人都会犯错,但如果有的话,你真的只是把你最引人注目的那些放在你的简历上。 ;-)
    • 呵呵,@Someone,是的:“如果您的答案不完全正确,请不要担心,人们有机会通过投票来判断它。”搞笑!...:D
    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 2017-05-14
    • 2014-12-01
    • 2017-02-23
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多