2010-07-26 63 views
5

我在我的DOM中有一个img元素。基于用户操作,我计算图像的URL,并更改图像元素的src属性(使用jQuery)。新图像的尺寸与旧图像的尺寸不同。这在Safari上运行良好,但IE不会调整新图像大小的显示大小。我有一个.load处理程序对src变化(我在其中对img元素的类进行了一些更改)...如果我知道如何访问图像的实际大小,我可以设置img元素的高度和宽度属性。这些值是否可以以某种方式访问​​?如果没有,有没有其他方式让图像以新尺寸显示?更改图像源(img)标记不会在IE上调整大小

回答

0

我会调查其他的解决方案,但你的确可以访问这些信息直接

var myImage = new Image(); 
myImage.src = $("image selector goes here").attr('src'); 
myImage.onload = function() { 
    alert(myImage.width + "," + myImage.height); 
} 
+1

感谢您的建议,但可惜当I *变化*图像的src和装入新的大小的图像,img元素仍报告的初始宽度和高度值,而不是新加载的图像(上IE,也就是说;正如我所说的那样,图像被Safari调整大小)。 – Zhami 2010-07-26 19:27:11

+0

尝试直接加载图像,而不是'attr('src')'方法。所以像'myImage.src =“http://example.com/awesome.gif”'然后检查宽度。我看不出如何报告相同的宽度,因为它应该不知道。这是一种痛苦,因为它向图像发送了两个请求到你的服务器,但是如果有缓存则不应该成为问题。 – 2010-07-26 19:34:47

+0

我怀疑渲染引擎是用第一张图片做布局的。随后的图像加载不会强制重新布局。我已经重写了我的整个方法来避免这个问题。 – Zhami 2010-07-27 01:38:44

1

我有同样的问题,但这种照顾它。

$("#img").removeAttr("height").removeAttr("width").attr("src", newsrc); 
+0

我不明白这是如何工作的。纠正我,如果我错了,但从我可以看到高度和宽度不是DOM属性 - 风格是然而。删除'风格'在Chrome中可用,请参阅我的答案。 – tronbabylove 2013-01-06 17:34:15

3

我在Chrome,IE浏览器不工作,但我有同样的问题,我想我会分享给其他人就这个问题说绊倒。我通过改变源,即:

myImg.removeAttribute( '风格')之前去除从图像中 “style” 属性解决了这个的setAttribute( 'SRC',newSrc)。

+0

工程就像一个魅力。 – 2013-08-21 10:02:40

相关问题