この問題の HTMLテスト ページはこちらにあります。何らかの理由で、MobileSafari はImage.width/height
1700 ピクセルを超える画像のプロパティを半分の値として報告しています。つまりwidth
、たとえば JPG のプロパティは 2000 ですが、MobileSafari JavaScript はそれを 1000 と報告します。幅 1700px の画像で同じコードを試すと、正しい幅が得られます。
私が行ったテストでは、2 つの画像 (異なるサイズの同じ画像) を読み込み、JavaScript のサイズ値を表示します。私が試した:
- Mac OS X 10.6.8 の Chrome 22、Safari 5.1.7、Firefox 15.0.1 (正しいサイズ)
- iOS シミュレーター 4.3 SDK 3.2 (サイズが正しくありません)
- iOS 5.1 を搭載した iPad 2 (サイズが正しくありません)
- iOS 5.1 を搭載した iPhone 4S (サイズが正しくありません)
なぜこれが起こっているのですか?どこかに設定がありませんか?一部の画像では機能するのに、他の画像では機能しないのはなぜですか?
テストはこちら: http://still-island-1941.herokuapp.com/sizetest.html
これは JavaScript コードです。
var imgBig, imgSmall;
function init() {
imgBig = new Image();
imgBig.onload = handleBig;
imgBig.src = "/images/size.jpg";
imgSmall = new Image();
imgSmall.onload = handleSmall;
imgSmall.src = "/images/test1.jpg";
document.getElementById("browser").innerHTML = navigator.userAgent;
}
function handleBig() {
document.getElementById("dimensionsBig").innerHTML = imgBig.width + "x" + imgBig.height;
document.getElementById("testBig").src = imgBig.src;
}
function handleSmall() {
document.getElementById("dimensionsSmall").innerHTML = imgSmall.width + "x" + imgSmall.height;
document.getElementById("testSmall").src = imgSmall.src;
}
これは HTML コードです。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MobileSafari image dimensions test</title>
</head>
<body onload="init()">
<p>your browser: <strong><span id="browser"></span></strong></p>
<p>big image dimensions: <strong><span id="dimensionsSmall"></span></strong> (should be 1700x1134)</p>
<img id="testSmall" />
<p>small image dimensions: <strong><span id="dimensionsBig"></span></strong> (should be 2000x1334)</p>
<img id="testBig" />
</body>
</html>