2013-08-20 151 views
0

我已經有了一點的JavaScript,只是不工作在IE瀏覽器。IE瀏覽器的JavaScript圖像調整大小不起作用

function resize($img) { 
    var max_size_w = 200; 
    var max_size_h = 200; 
    var h = $img.height(); 
    var w = $img.width(); 
    if (h > max_size_h) { 
     h = max_size_h; 
     w = Math.ceil($img.width()/$img.height() * max_size_h); 
    } 
    if (w > max_size_w) { 
     h = Math.ceil($img.height()/$img.width() * max_size_w); 
     w = max_size_w; 
    } 
    $img.css({ height: h, width: w }); 
} 

$(window).load(function() { 
    // Size the images correctly 
    $(".personPictureImage").each(function() { 
     var $img = $(this).find("img"); 
     $img.load(function() { resize($(this)); }); 
     if($img.height()) 
      resize($img); 
    }); 
}); 

在其他瀏覽器調整大小的圖像,以適應在200x200的盒子。在IE中,我獲得了30px = 28px的大小。在鉻我得到了200px乘142px。

我知道IE有問題,通常是一個可怕的瀏覽器,但我試圖支持它。我如何修復我的代碼在IE中工作?

+0

您是否嘗試逐步調試計算以瞭解其失敗的位置? – Tchoupi

+0

哪個版本的IE?他們全部? – Nope

回答

0

嘗試使用這種計算替換

var max_size_w = 200; 
var max_size_h = 200; 
var h = $img.height(); 
var w = $img.width(); 
if (h > max_size_h) { 
    h = max_size_h; 
    w = Math.ceil($img.width()/$img.height() * max_size_h); 
} 
if (w > max_size_w) { 
    h = Math.ceil($img.height()/$img.width() * max_size_w); 
    w = max_size_w; 
} 

var MAX=200,wi=$img.width(),he=$img.height(), 
r=MAX/Math.max(wi,he), 
w=Math.round(wi*r), 
h=Math.round(he*r); 

..

var MAX=200, 
r=MAX/Math.max(this.width,this.height), 
w=Math.round(this.width*r), 
h=Math.round(this.height*r); 

從這裏拍攝。

https://stackoverflow.com/a/17502568/2450730

PS:r是比&我也將使用純JavaScript,你做的是所有瀏覽器都支持的一切。

相關問題