考慮以下代碼:檢測圖像寬度時maxWidth使用
var img = new Image();
img.onload = function() {
console.log(this.width);
};
img.src = 'http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Gull_portrait_ca_usa.jpg/800px-Gull_portrait_ca_usa.jpg';
document.body.appendChild(img);
這將打印的圖像的寬度(800)正確。但是,如果我申請使用的CSS最大寬度:
img {max-width: 400px}
測試用例:http://jsfiddle.net/MSjnM/
JS代碼上面會打印出400
代替。這有點令人困惑,因爲人們會認爲width
屬性代表原始圖像寬度,而不是計算的寬度。
我們更加混亂的東西,如果我寬度檢測後的onload事件的圖像添加我得到不同的結果:
var img = new Image();
img.onload = function() {
console.log(this.width);
document.body.appendChild(img);
};
img.src = 'http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Gull_portrait_ca_usa.jpg/800px-Gull_portrait_ca_usa.jpg';
測試用例:http://jsfiddle.net/MSjnM/2/
這將打印出800
相反,即使CSS已經應用。我認爲這是因爲在之後附加了圖像我檢測到了寬度,並且一旦將圖像插入到DOM中,就會應用最大寬度。
好的,如果我想獲得原始圖像大小,無論何時或如果在DOM中插入IMG
元素還是應用了任何CSS樣式,我該如何做到自動防故障?
使用FX11和Op11.61你都撥弄打印 「400」。 – fcalderan 2012-03-30 08:51:21
@FabrizioCalderan我在Chrome中進行了測試,但那更令人擔憂...... – David 2012-03-30 08:51:53
好的,我改變了一些代碼,以便在瀏覽器中獲得相同的效果,謝謝Fabrizio。 – David 2012-03-30 08:54:09