1

デスクトップで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.

http://jsfiddle.net/PvY5t/4/

フィドルを使用すると、 img1 は不明な理由で失敗し、 img2 は成功します。

IPhone で img1 と img2 の onload を正常に実行する方法を教えてください。

編集:

とても興味深い。img を jpg として再保存したところ、 http: //jsfiddle.net/PvY5t/9/ で機能 するようになりました。

EDIT2:

ここのこれらのリンクは非常に関連性があるようです

(本当に) 長い背景画像が iPad Safari でレンダリングされない

https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html

4

3 に答える 3

3

を設定したため、iOS 9でこの問題に遭遇しましたimg.crossOrigin = "anonymous"

これを削除すると、カメラから直接大きな写真を iPad にロードできるようになりました。

于 2016-01-14T11:19:52.593 に答える
2

そのため、iOS シミュレーターの Safari でネットワーク プロファイリングを行っていましたが、最初の画像が正常に要求されているようです (応答ステータス 200、OK、画像が読み込まれているようです)。ただし、onload イベントではなく onerror イベントが発生する理由はまだわかりません。画像がロードされたときにJavascriptが返すことを期待しているヘッダーと関係があると思いますが、追跡できないようです。編集にご期待ください。

編集: 画像がホストされているサーバーを所有/管理していますか? その場合、サーバーが .png 画像を提供しているときに何かおかしな動作をしている可能性があります。

于 2013-09-12T21:02:03.037 に答える