javascript - 区分文件下载和页面更改的 onbeforeunload

标签 javascript dom-events onbeforeunload

我有一个 onbeforeunload 事件,该事件应该在用户访问新页面时触发。它工作得很好,但我发现每当用户从他们所在的页面下载文件时,它也会在 Chrome 中触发。

我希望能够判断该事件是否因为文件下载而被触发。最好的方法是什么?

编辑:澄清一下,我不拥有正在收听 onbeforeunload 的网站。该事件由安装在第 3 方网站上的 Javascript 代码段监听。

最佳答案

如果将 download="[FILENAME]"添加到 a 标记,似乎会阻止 onbeforeunload 触发:

<a download="myfile.jpg" href="mysite.com">click me</a>

这是一个更简单的解决方案。您可以省略文件名,只需说“下载”即可使用默认文件名。让我指出这有强制重新下载而不是使用缓存的副作用。我认为这是在 2012 年添加到 chrome 和 ff 中的。不确定 safari 或 ie 支持。

关于javascript - 区分文件下载和页面更改的 onbeforeunload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391531/

相关文章:

javascript - 如何为 chrome 中的(python) Selenium 测试禁用 "Reload site? Changes you made may not be saved"弹出窗口?

javascript - 使用 color-thief 从图像中获取背景颜色

javascript - 打开/关闭鼠标悬停时显示的标题

javascript - 无法在正确的时间将元素移动到结束位置

javascript - 为什么此按钮元素与 div 具有不同的 'click' 行为?

javascript - 卸载前发送 AJAX 到服务器

javascript - 如何使用javascript删除卸载事件的提示

javascript - 要求用户共享的JS对话框, "message"参数什么也没做?

javascript - 删除带参数的事件监听器

javascript - 访问 JS DOM 内部的函数参数