图像未加载,但未触发错误或onabort

时间:2014-06-04 10:58:57

标签: javascript javascript-events

我正在下载大量图片,并且有时会出现图像"逃脱"脚本没有触发任何这些事件(不幸的是我没有实际的示例图像):

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

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

1 个答案:

答案 0 :(得分: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 download begin
  • 来自服务器的fethces图像并提供它
  • 然后登录img download end

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

我可以推荐一条建议:控制日程安排图片下载。随着新iPad的出现,最佳做法是将待处理的图像下载限制为1.我不喜欢它,大多数桌面浏览器可以在多个线程上下载图像,我一次从同一个域读取了2个图像,同一页面的4..8张图片。

祝你好运。