gpt4 book ai didi

javascript - 为什么 IE10 在使用 javascript href 单击 anchor 元素时会触发 beforeunload 事件以及如何防止它

转载 作者:搜寻专家 更新时间:2023-11-01 05:22:45 26 4
gpt4 key购买 nike

为了跟踪用户何时离开页面,我们监听了 beforeunload 事件。一切正常,直到使用 IE10 的用户在 href 参数而不是 url 中单击带有 javascript 的空链接( anchor )。例如:

<a href="javascript:void(0)">Empty link with JS in href</a>

这种情况使 IE10 有时 触发 beforeunload 事件。 Chrome/IE11 工作正常(0 beforeunloads),而 IE10 会不时触发它,尤其是当您快速单击它时。这是 JSFiddle试试吧。
有谁知道为什么会发生以及如何解决?我很乐意在标记中删除/替换此类 anchor ,但在我的情况下这是不可能的。
谢谢。

最佳答案

从技术上讲,IE10 这样做可能被认为是正确的,因为您正在卸载页面...有点。如果您的链接是:

<a href="javascript:'blah';">

然后您将进入一个只有内容“blah”的新页面。这就是 javascript: 链接的工作方式。 void 不返回任何内容(undefined),当 javascript: 链接不返回任何内容时,它不会替换页面内容。

从理论上讲,如果目标资源是下载,也会发生类似的事情——页面通常会被卸载,但因为目标是下载,所以页面不会改变。 204 No Content 的 HTTP 响应也应该触发此行为。

但是,正如您所注意到的,这是不受欢迎的行为,因此越来越常见的情况是,在页面本身真正被卸载之前,浏览器不会触发卸载事件。不幸的是,据我所知,这是浏览器级别的事情,超出了您的控制范围。

据我所知,唯一真正解决此问题的方法是确保您正确地preventDefault点击事件。

关于javascript - 为什么 IE10 在使用 javascript href 单击 anchor 元素时会触发 beforeunload 事件以及如何防止它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com