图像未加载,但未触发 onerror 或 onabort

问题描述 投票:0回答:1

我正在下载大量图像,有时会发生图像“逃脱”脚本而没有触发任何这些事件(不幸的是我没有实际的示例图像):

var img = new Image();
img.onerror = function() {alert("error")};
img.onabort = function() {alert("abort")};
img.onload = function() {alert("success")};
img.src = whateverurl;

是否有任何其他事件可能会因超时或任何其他可能导致图像无法加载的事件而触发?

javascript dom-events
1个回答
0
投票

我在类似情况下使用不同的网络浏览器(下载许多图像)并遇到了几个问题。所以,我的回答并不能解决你的问题,但也许你会得到一些启发。

New Ipad 不能同时加载两张图片,期间。这是一场灾难,因为如果我的一张图片卡在服务器端,整个应用程序就会卡住。如果我一次尝试更多图像,浏览器会安排它。更糟糕的是,我可以检测到超时(我在设置图像的

setTimeout()
时启动
.src
,如果
setTimeout()
.onload()
.onerror()
之前出现,我知道服务器端卡住了,但是作为据我所知,没有办法取消图像下载。设置
.src
,删除对象,从DOM中删除 - 没有取消。

写一个代理监控图片下载。我用 PHP 写了一个原始的代码,并修改了客户端代码以将其与图像一起使用,例如而不是

example.net/pics/image3.png
我使用了
local/myproxy.php?img=example.net/pics/image3.png
。代理

  • logs img 下载开始
  • 从服务器获取图像并提供它
  • 然后记录img下载结束

在检查日志时,我使用了“ops!”短语经常。慢速图像“下载结束”日志消息在请求它们后出现很长时间,并且保证其他奇怪的行为。

我可以推荐一个建议:控制计划图像下载。正如 New iPad 告诉我的那样,最佳做法是将待处理的图像下载限制为 1 个。我不喜欢它,大多数桌面浏览器可以在多个线程上下载图像,我一次从同一个域读取了 2 个图像,同一页 4..8 张图片。

祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.