遍历一组图片,遍历时需要获取其宽度,效果出来后,IE和Firefox都没有问题,唯独Chrome和Safari会出现获取不到图片宽度的情况。以往基本上是IE不兼容,这下出现Chrome和Safari不兼容了,倒觉得稀奇了,故写出来分享下。
注:代码修改之前,直接用的$(ele).width()来取图片的宽度。涉及代码:
- $(function(){
- ... //此处省略N行
- var w = $(this).width();
- ... //此处省略N行
- });
分析后得知,Chrome和Safari肯定是图片还没有完全载入进来,就去获取图片的宽度了,得其宽度为0,肯定就出错了
解决办法:
一、不要使用”$(document.ready(function(){…})”或其简写形式”$(function(){…}),使用$(window).load(function(){}); 代码改写如下:
- $(window).load(function(){
- ... //此处省略N行
- var w = $(this).width();
- ... //此处省略N行
- });
二、使用Image对象和其onload方法
- $(function(){
- ... //此处省略N行
- var that = $(this);
- var img = new Image();
- img.src = $(this).attr("src");
- img.onload = function(){
- var w = img.width;
- }
- ... //此处省略N行
- });