onbeforeunload的可靠性

Rie*_*u͢s 12 javascript onbeforeunload

活动有多可靠window.onbeforeunload

  1. 是否会在所有主流浏览器中触发?
  2. 如果客户端浏览器崩溃,它会触发吗?(我相信奇迹)
  3. 它是否能够延迟关闭事件,以防它可能需要"更长一点"或它会被切断?
  4. 还有其他选择吗?

Nie*_*sol 12

  1. 是的,onbeforeunload适用于我曾经尝试过的每个浏览器.
  2. 不,如果浏览器崩溃然后它就会死掉,那么就无法解决这个问题.
  3. 我在评论中说"不",但确实有些依赖.例如,如果您有一个非常长的循环,它将在页面关闭之前完全执行.但是,您不能setTimeout在处理程序中使用AJAX或任何其他异步函数.它必须以同步方式返回一个字符串以阻止卸载.
  4. 我再次在评论中说"不",但我可以进一步阐述.如果您将事件处理程序附加到页面以检测链接上的单击,则可以手动调用onbeforeunload处理程序以获取字符串响应,并使用该处理程序显示自定义确认框,并在执行此操作时取消单击事件.请注意,这不会影响重新加载,后退,前进或关闭按钮,只会单击指向新页面的链接.您还应该注意不要影响到同一页面上的锚点的javascript:void(null);链接,或者- 类型链接.这将允许您也发出AJAX请求,如果用户确认要离开页面,您可以在加载新页面之前执行一些操作.

    长话短说,在某些情况下有其他选择,但这一切都源于onbeforeunload事件,可能相当复杂.