2012-05-10 99 views
0

我有以下的javascript(調整大小在Blogspot的博客圖片):Image.width的ie瀏覽器

var imageTags = document.getElementsByTagName('img'); 
    for(i = 0 ; i < imageTags.length; i++){ 
    if(imageTags[i].src.indexOf('/s400/', 0)>-1) { 
     if(imageTags[i].style.width=='400px' || imageTags[i].width==400) { 
     imageTags[i].style.width='556px'; 
     imageTags[i].style.height='368px'; 
     } else { 
     imageTags[i].style.width='368px'; 
     imageTags[i].style.height='556px'; 
     } 
     imageTags[i].src=imageTags[i].src.replace('/s400/', '/s556/'); 

    } 
    } 

它完美的作品在Firefox和Chrome,但在IE瀏覽器(測試IE9)似乎總是進入第二個分支,好像imageTags[i].width==400總是被評估爲false。我如何修復IE瀏覽器?

編輯: 建議我暫時添加一個警報來顯示圖像的寬度,在IE9上它是...... 416.它看起來像IE添加了從HTML寬度的邊距。

+2

請,請,請...爲imageTags [i]創建一個變量。它只是增加了代碼的混亂,使其理解/解析/讀取/維護變得稍微困難​​。 –

+0

在else塊中,你能輸出從'imageTags [i] .style.width'返回的寬度嗎?好奇IE 9正在計算它在... –

+0

@ZackMacomber,請參閱編輯。 – Grzenio

回答

0

嘗試imageTags[i].offsetWidth==400代替imageTags[i].width==400
我建議,因爲.WIDTH propertie只得到在標籤中定義的width,而.offsetWidth得到真正的寬度

+0

從來沒有聽說過圖像的innerWidth。我認爲這是一個jQuery元素方法... – mplungjan

+0

對不起,正確的是offsetWidth而不是innerWidth。我的錯 –

0

請運行該告訴你得到了什麼 - 你目前和調整然後加載一個新的圖像

var imageTags = document.getElementsByTagName('img'); 
for(var i=0,n=imageTags.length,img,src,w,h,newImg; i<n; i++) { 
    img = imageTags[i]; 
    src = img.src; 
    if(src.indexOf('/s400/', 0)==-1) continue; 
    alert(img.width); 
    if(img.width==400) { 
    w=556; 
    h=368; 
    } else { 
    w=368; 
    h=556; 
    } 
    newImg = document.createElement("img"); 
    newImg.onload=function() { this.width=w; this.height=h} 
    newImg.src=src.replace('/s400/', '/s556/') 
    img.parentNode.replaceChild(newImg,img); 
} 
0

建議我檢查了什麼是由IE報告的寬度,它是416而不是400(可能利潤增加?)。所以我只是添加了一個明顯的黑客來檢查400和416.