0

我有一些在 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 x =28px 的大小。在 chrome 中,我得到 200 像素 x 142 像素。

我知道 IE 有问题,通常是一个可怕的浏览器,但我还是想支持它。如何修复我的代码以在 IE 中工作?

4

1 回答 1

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,因为所有浏览器都支持你所做的一切。

于 2013-08-20T21:29:03.533 回答