【问题标题】:Details about window.stop()关于 window.stop() 的详细信息
【发布时间】:2014-05-05 20:35:19
【问题描述】:

我刚刚遇到window.stop()

stop() 方法完全等同于在浏览器中单击停止按钮。由于脚本加载的顺序,stop() 方法不能停止加载包含它的文档,但它会停止加载大图像、新窗口和其他延迟加载的对象。 https://developer.mozilla.org/en-US/docs/Web/API/Window.stop

我想知道:

  1. “窗口”和“其他延迟加载的对象”指的是什么?谁能给我一个实际的例子?
  2. 如果我将图像附加到正文并在加载 30% 时调用 window.stop(),然后稍后附加相同的图像;后一个图像是否只有 70% 的剩余负载?

【问题讨论】:

    标签: javascript jquery caching methods


    【解决方案1】:

    “windows”和“其他延迟加载的对象”指的是什么 至?谁能给我一个实际的例子?

    新窗口可以是 iframe 或常规框架。脚本本身可以标记为defer,它在文档和其他内联脚本之后加载它们,因此也可以使用window.stop() 停止这些脚本。因此,可能会停止加载的对象的实际示例是:iframe、嵌入式对象(如 Adob​​e Flash)、标记为defer 的脚本和图像。这里的想法是,如果您要从页面中的脚本调用window.stop(),它只能应用于尚未完成加载的资源。根据定义,至少部分文档和您的脚本已经完成加载,否则脚本将不会运行,因此您可以调用window.stop(),因此它主要适用于稍后在加载过程中加载的资源,例如以上。

    如果我将图像附加到正文并在 30% 时调用 window.stop() 已加载,然后稍后附加相同的图像;将 后一张图片只有 70% 的剩余负载?

    浏览器缓存不太可能缓存 30% 的图像,然后在您下次请求该资源时仅继续加载剩余的 70%。如果对象没有完全加载,大多数缓存只是拒绝缓存对象。无论如何,这将完全取决于浏览器,因为这种类型的缓存行为超出了标准。

    【讨论】:

      【解决方案2】:

      “windows”和“其他延迟加载的对象”指的是什么 至?谁能给我一个实际的例子?

      我曾经像这个例子一样在页面重新加载时做一个实用的方法来保持窗口平静。

          window.stop();
          (do some staff here..)
          window.location.reload(true);
      

      当页面重新加载时,窗口会自动激活。
      所以它只停止浏览器,而不是脚本。

      【讨论】: