Javascript IPhone img加载失败

Javascript IPhone img加载失败,javascript,iphone,ios,image,onload,Javascript,Iphone,Ios,Image,Onload,我有一些非常简单的代码,可以在桌面上使用Chrome、Firefox、IE和Safari,但当我在Iphone上尝试时,它失败了 基本上是 var img1 = document.createElement('img'); img1.onerror = function() { console.log('img1 fail'); }; img1.onload = function() { console.log('img1 success'); }; img1.src =

我有一些非常简单的代码,可以在桌面上使用Chrome、Firefox、IE和Safari,但当我在Iphone上尝试时,它失败了

基本上是

var img1 = document.createElement('img');

img1.onerror = function() {
    console.log('img1 fail');
};

img1.onload = function() {
    console.log('img1 success');
};

img1.src = 'http://gvgmaps.com/linktothepast/maps/LegendOfZelda-ALinkToThePast-LightWorld.png';
问题是在IPhone上运行的是
onerror
函数,而不是
onload
。对于桌面,
onload
运行正常,没有
onerror

使用小提琴,img1因未知原因失败,img2成功

有人能告诉我如何在IPhone上成功运行img1和img2的onload吗

编辑:

非常有趣。我把img重新保存为jpg,现在它可以工作了。有人能提供一些颜色说明为什么会这样

编辑2:

这里的这些链接似乎非常相关


因此,我在iOS模拟器上的Safari中进行了一些网络评测,第一个映像似乎被请求的很好(响应状态200,正常,映像似乎已加载)。仍然不确定它为什么会触发onerror事件而不是onload事件。我猜这与Javascript在加载图像时希望返回的标题有关,但我似乎无法找到它。请继续关注编辑


编辑:您是否拥有/管理承载映像的服务器?如果是这样的话,您的服务器在提供.png图像时可能正在做一些奇怪的事情。

因此,我在iOS模拟器上的Safari中进行了一些网络分析,第一个图像似乎正在被请求中(响应状态为200,正常,并且图像似乎已加载)。仍然不确定它为什么会触发onerror事件而不是onload事件。我猜这与Javascript在加载图像时希望返回的标题有关,但我似乎无法找到它。请继续关注编辑


编辑:您是否拥有/管理承载映像的服务器?如果是这样的话,您的服务器在提供.png图像时可能正在做一些奇怪的事情。

好的,我想答案是这样的

我正在尝试使用一个4096 x 4096的PNG文件

然而,这个苹果链接

表示PNG的图像必须是

宽度*高度≤ 3*1024*1024

显然我超出了已知的iOS资源限制。

正方形的最大图像大小应为
sqrt(3*1024*1024)
,类似于1773px。果然,当我把图像缩小到1770px时,它就工作了


JPEG有不同的资源限制,所以我的jpg没有达到这个限制。

好的,我想答案是这样的

我正在尝试使用一个4096 x 4096的PNG文件

然而,这个苹果链接

表示PNG的图像必须是

宽度*高度≤ 3*1024*1024

显然我超出了已知的iOS资源限制。

正方形的最大图像大小应为
sqrt(3*1024*1024)
,类似于1773px。果然,当我把图像缩小到1770px时,它就工作了


JPEG有不同的资源限制,因此我的jpg没有达到该限制。

我在iOS 9上遇到这个问题,因为我设置了
img.crossOrigin=“anonymous”


删除该选项后,可以将相机中的大照片直接加载到iPad上。

我在iOS 9上遇到了这个问题,因为我设置了
img.crossOrigin=“anonymous”


删除该选项后,可以将相机中的大照片直接加载到iPad上。

根据W3C规范,img不需要启动onload。那么,当img加载后,我如何检查并运行功能?还有,为什么img1失败,img2成功?这两种情况对我都不适用。最新的chromeChrome 28.0.1500.95 m适合我。两个都在加载。我想知道你是@Murtnowski的同一件事。。。为什么它只适用于第二个映像?根据W3C规范,img不需要启动onload。那么,当img已加载时,我如何检查并运行一个函数呢?还有,为什么img1失败,img2成功?这两种情况对我都不适用。最新的chromeChrome 28.0.1500.95 m适合我。两个都在加载。我想知道你是@Murtnowski的同一件事。。。为什么它只适用于第二个映像?服务器是Dreamhost。不应进行任何虚假交易。服务器是Dreamhost。不应该再胡闹了。几年后,这仍然是真的……我的头撞在了键盘上。谢谢。几年后,这仍然是真的……我的头撞在了键盘上。谢谢