我正在动态加载(大)图像以绘制到 html5 画布中,如下所示:
var t = new Image();
t.onload = ...
t.src = 'http://myurl';
但每隔一段时间就会想取消图片请求完全地。
我想出的唯一方法是设置src
to ''
. i.e.
t.src = ''
这在许多浏览器中都有效,但似乎只有 Firefox 真正取消了图像的 http 请求。
我测试了这个Fiddler2 http://www.fiddler2.com/fiddler2/通过禁用缓存并启用“模拟调制解调器速度”。然后运行用于测试取消图像请求的小提琴。 http://jsfiddle.net/amirshim/F4HbT/20/(我很想听听关于如何测试这个的其他想法)
我知道有办法取消所有请求(就像这个问题一样 https://stackoverflow.com/questions/930237/javascript-cancel-stop-image-requests),但我只想取消一项。
关于其他方法(尤其是在移动浏览器上)有什么想法吗?
这是我设法让它在所有现代浏览器(Chrome、Safari、Mobile-Safari、Firefox 和 IE9)中工作的唯一方法。
- 加载一个空的和隐藏的
iframe
- 附加一个
image tag
to the body
in the iframe
- 当。。。的时候
img.onload
完成后,您可以使用该图像 dom 元素绘制到 html5 画布drawImage()
- 如果您想取消加载,请发出
stop()
on the iframe
's contentWindow
(or execCommand("stop", false)
on contentDocument
in IE).
- 取消图像加载后,您可以重新使用 iframe 来加载更多图像。
我为此创建了一个类,并将 CoffeeScript 代码(及其编译后的 JavaScript)放在 github 上:可取消的 Html5 图像加载器 https://github.com/amirshim/Javascript-and-Coffeescript-Utils
如果你想玩一下,我还创建了一个jsfiddle 来测试一下 http://jsfiddle.net/amirshim/6vL4N/。请记住启动 Fiddler2(或类似的东西)以查看实际的网络请求是否真的被取消。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)