chrome浏览器获取图片的宽高为0

类似如下的图片,display:none; 

1.在火狐浏览器中获取高度和宽的是可以获取到的width 和 height

试了多种网上的方法都没用

例如下面这种网上的方法,根本没用

var img = new Image;    

img.onload = function(){        

alert ( img.width );     };    

img.src = "test.gif";

  最后监听网络发现,图片没有加载完成

可以看到图片的状态是pending

按道理来说我执行的代码是在

$(function(){

//  获取图片的宽高代码

})

为什么没有获取到呢? 这个不是在网页加载完成以后执行的吗?

最后我改成了 window.onload 执行就可以了

原来 window.onload 和jquery的文档加载完成是有区别的 ,前者是所有的文件以及结构加载完成,jquery则是DOM结构加载完成就可以了!

我们使用window.onload = function(){ ... },是希望在页面被载入时执行function中的处理,但是这些JS代码只有在页面上的全部内容加载完成(包括头部的banner广告,所有图片)的时候才会执行。将window.onload放在最上边的原因就是当你第一次运行codes的时候,HTML'document'还没有加载完成。

  而$(document).ready()却不需要载入得这么“完全”。$(document).ready()是在DOM结构载入完后执行的,而 window.onload是得在所有文件都加载完后执行的,注意区别,一个是DOM加载完,一个是所有文件加载完。因此,ready肯定在onload 之前发生,页面加载大或者多的图片而使onload执行延后,使用jquery的ready可缓解此问题。

  我们应该紧记,jquery的ready是指在页面的DOM模型加载完后执行指定的函数。之所以经常用$(document).ready()来取代 window.onload,就是因为它是在dom模型加载完成后就执行,而window.onload是在dom元素加载完全后才执行。

猜你喜欢

转载自blog.csdn.net/QWERTY1994/article/details/81354519
今日推荐