当window.onbeforeunload返回false时,Safari会保持"加载"状态

rpe*_*ayr 5 javascript safari onbeforeunload

以下要点:https://gist.github.com/1876791(从这个问题的演示中借用)是一个window.onbeforeunload在js 中使用的简单例子.

我们遇到的问题如下(适用于Safari 5.1.3而不是最新的Chrome版本):

  1. 访问此页面:http://www.4guysfromrolla.com/demos/OnBeforeUnloadDemo1.htm
  2. 单击其中一个链接,您将收到一条警告,询问您是否确实要离开此页面
  3. 点击"留在页面上"
  4. 使用重新加载页面cmd-R.如果您真的想离开页面,系统会再次询问您
  5. 点击"留在页面上".
  6. Safari保持"加载"状态,进度条显示为加载下一页.

这是Safari的错误吗?有办法解决这个问题吗?

Pet*_*rel 3

即使跳过 OP 的步骤 2 和 3,我也能够重现此问题。任何形式的重新加载都会出现此问题。重现的简约步骤:

  1. 访问有问题的页面
  2. 点击重新加载。
  3. 单击“留在页面上”按钮。

加载进度在重新加载命中后立即在视觉上预先参与,并在确认对话框的整个生命周期中保持如此(显然是为了传达“悬挂在悬崖边缘”类型​​的成熟情况;)但是:

  • 当使用“停留在页面上”按钮关闭对话框时,它会保留停止X符号,并且加载进度仍然处于工作状态并冻结在 10% 左右的位置。
  • 无法通过任何方式(键盘、按钮、脚本)取消此“加载”。
  • Web Inspector 中的“网络”选项卡断言没有发生加载。

这确实看起来像一个 Webkit/Safari UI 错误 - 它看起来无法在停留在页面的情况下脱离进度条。最好的办法是向Webkit 团队报告,或者,既然您在 Safari 中遇到过这种情况,也许Safari 团队会更好。