为了跟踪用户何时离开页面,我们会收听beforeunload
事件。一切正常,直到使用IE10
的用户点击href
参数中的javascript而非url的空链接(锚点)。例如:
<a href="javascript:void(0)">Empty link with JS in href</a>
此案例使IE10 有时触发beforeunload
事件。 Chrome / IE11工作正常(0 beforeunload
s),而IE10会不时触发它,特别是如果你快速点击它。这是JSFiddle来试试
有谁知道它为什么会发生以及如何解决它?我很乐意在标记中删除/替换这样的锚,但在我的情况下这是不可能的
感谢。
答案 0 :(得分:7)
从技术上讲,IE10可能被认为是正确的,因为你正在卸载页面......那种。如果您的链接是:
<a href="javascript:'blah';">
然后你会在一个只有内容'blah'的新页面上结束。这就是javascript:
链接工作的方式。 void
不返回任何内容(undefined
),当javascript:
链接未返回任何内容时,它不会替换页面内容。
理论上,如果目标资源是下载,会发生类似的事情 - 通常会卸载页面,但由于目标是下载,因此页面不会更改。 204 No Content
的HTTP响应也应该触发此行为。
但是,正如您所注意到的,这是不受欢迎的行为,因此在页面本身被卸载之前,浏览器不会触发卸载事件变得越来越常见。不幸的是,据我所知,这是一个浏览器级别的东西而且在你无法控制的范围内。
据我所知,对此唯一真正的解决方法是确保您正确preventDefault
点击事件。