在Safari&中没有处理document.ready的脚本Chrome(FF好的),但适用于document.resize

时间:2011-04-18 04:51:40

标签: jquery cross-browser

我有以下jquery脚本来调整图像大小并给它左边距以使其水平居中。该脚本在FF中运行良好,但在Safari和Chrome中我遇到了问题。

Safari& Chrome问题:图片调整大小正常,但是在调整图像大小之前,leftMargin似乎设置为,导致图像被推得太远。仅在document.ready上发生此问题。调整浏览器大小时,脚本运行正常。

function imageresize() {
    var h = $(window).height(),
        w = $(window).width(),
        newHeight = h * 0.5,
        newTopMargin = newHeight * 0.12;

        $('img.resize').css({'height' : newHeight + 'px', 'margin-top' : '-' + newTopMargin + 'px'});
    var leftMargin = (w - ($('img.resize').width()))/2;
        $('img.resize').css('margin-left', leftMargin + 'px');

}
$(document).ready(function() {
  imageresize();
});

$(window).resize(function() {
  imageresize();
});

脚本放在</body>之前。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:14)

文档就绪事件可以在图像加载完成之前触发。尝试绑定到窗口或图像“load event”。

$(window).load(function() {
  imageresize();
});

// or

$('img').load(function() {
  imageresize();
});

答案 1 :(得分:1)

如果只有一个图像,您还可以绑定到图像加载事件。

$(img).load(function() {
  imageresize();
});