我有一个脚本,根据某些事件(用户交互,setTimeout),加载一个JSON,并使用JSON的结果加载一堆图像。我还根据用户与页面的交互预加载了一些图像。有时,在页面打开一段时间后,从JSON加载的图像开始“减速”,需要更多时间加载(如果我刷新页面,它们加载正常)。所以我开始寻找一种方法来中止当前加载的图像,并遇到了“window.stop()”。我在规范中阅读了MDN amd中的描述,并且无法理解这是否是我正在寻找的。 p>
stop()方法完全等同于单击中的停止按钮 浏览器。由于脚本的加载顺序, stop()方法无法停止包含它的文档 加载,但它会停止加载大图像,新窗口, 和其他加载延期的对象。
如果存在,则Window对象上的stop()方法应该是 尝试浏览浏览上下文而该尝试不是 当前正在运行卸载文档算法,取消它 导航;然后,它必须中止浏览的活动文档 调用它的Window对象的上下文。
...在此上下文中取消任何获取算法的实例 记录,丢弃任何排队等待的任务,并丢弃任何任务 从网络收到的更多数据......
这是否意味着在使用window.stop()之后我无法再加载任何图像?我做了一些测试,在Firefox,Chrome和Safari上,这似乎有效(在window.stop之后加载图像),但这似乎与规范相矛盾。
window.stop();
document.getElementById("c").innerHTML = "<img src='http://a5.mzstatic.com/us/r30/Purple5/v4/5a/2e/e9/5a2ee9b3-8f0e-4f8b-4043-dd3e3ea29766/icon128-2x.png'/>";
<div id="c"></div>
我是否误读了规范,使用这种代码是安全的,还是应该尝试以不同的方式进行?
答案 0 :(得分:0)
这是同步呼叫。在您的代码中,window.stop()
运行,然后-加载新图像。规格也很好。.
document.getElementById("c").innerHTML = "<img src='//test.com/THIS_WILL_STOP_LOADING.png'/>";
window.stop();
document.getElementById("d").innerHTML = "<img src='//test.com/THIS_WILL_LOAD.png'/>";
答案 1 :(得分:-1)
你需要做
return window.stop();
因为已经加载了window.stop();
的脚本,所以它将完成。
如果之后有另一个脚本,它将被停止,请查看示例:
<div id="c"></div>
<script>window.stop(); </script>
<script>document.getElementById("c").innerHTML = "<img src='http://a5.mzstatic.com/us/r30/Purple5/v4/5a/2e/e9/5a2ee9b3-8f0e-4f8b-4043-dd3e3ea29766/icon128-2x.png'/>";</script>
&#13;