Jquery $(img.load()和/或img.onload=。。。返回IE8中的红色值
我知道这个话题讨论了很多,但我找不到任何适合我的解决方案。因此,我的代码大致如下:Jquery $(img.load()和/或img.onload=。。。返回IE8中的红色值,jquery,internet-explorer,height,width,image,Jquery,Internet Explorer,Height,Width,Image,我知道这个话题讨论了很多,但我找不到任何适合我的解决方案。因此,我的代码大致如下: var img =me.images[curID] var f = function() { var i = $(img); img.onload = null; $(img).unbind('load'); var iH = img.height; /*works for Firefox, Safari, Opera, Chrome*/ var i
var img =me.images[curID]
var f = function() {
var i = $(img);
img.onload = null;
$(img).unbind('load');
var iH = img.height; /*works for Firefox, Safari, Opera, Chrome*/
var iW = img.width;
if (jQuery.browser.msie) {
/*nothing works*/
iH = i.width(); /* returns 0*/
iH = i.attr('height'); /*returns undefined*/
iH = img.height; /*returns wrong 120:30 px instead of 1000:410 */
/*once page is reloaded - everything is fine */
}
}
src = img.src;
if ( (!img.complete) ||
(typeof img.naturalWidth != 'undefined' && img.naturalWidth == 0)
) { /*WAIT FOR LOAD*/
img.src = "";
$(img).load(f);
img.onload = f;
img.src = src;
} else { /*SHOW */
f.apply(img);
}
我做错了什么
p/s/图像位于淡入淡出的div内,因此我基本上希望在淡入淡出之前调整图像的大小
EDIT1:有关我的阵列的一些信息:
....
this.slides = this.slidesContainer.children();
this.n = this.slides.length;
for (var i=0;i<this.n;i++) {
var im = this.slides.eq(i).find('img:first')[0];
var sr = im.src;
this.images[i] = im;
this.imagesSrc[i] = sr;
}
...
EDIT2:我重写了一段代码,在加载时添加了一点,所以现在它在IE/FF/Opera/Safari/的任何地方都会触发。。。
程序流程IE8如下所示:
等待装货
如果我对其进行注释,则触发onload-jQuery.load。
内部f:img.width=120,img.height=30,似乎未加载。正确的宽度/高度为1000x410
很难说是什么触发了它,因为它并不总是发生,甚至在图像没有兑现时也不总是发生。但有时,我会看到那些奇怪的宽度/高度
EDIT3:关于如何加载图像,有一些解决方案,其中一种是使用onload,另一种是-。load,我同时使用这两种方法,所以这应该很好,即使代码可能不是最优的,也不是很整洁。如果您使用jQuery,请尝试使用jQuery获取图像的方法 而不是var img=me.images[curID]只需执行以下操作:
var img = $('img#imageID');
//get height:
img.height()
//get width:
img.width();
如果使用jQuery,请尝试使用jQuery获取图像的方式 而不是var img=me.images[curID]只需执行以下操作:
var img = $('img#imageID');
//get height:
img.height()
//get width:
img.width();
这个$图像加载后,img.height应在所有浏览器中工作;如果没有,则会发生一些非常奇怪的事情。@ElYobo确实在IE8中没有。那么您可能想针对jQuery提交一个bug?您可能想看看使用img.height时的大小差异是否与任何填充或边距匹配;IE使用不同的盒子模型,奇怪的事情发生了,我从来没有真正费心去记住:@Denis-我是什么。图片[curID]?@Neal那是img的DOM数组,不是jQuery。我在问题的底部添加了我如何形成它们的代码。这个$图像加载后,img.height应在所有浏览器中工作;如果没有,则会发生一些非常奇怪的事情。@ElYobo确实在IE8中没有。那么您可能想针对jQuery提交一个bug?您可能想看看使用img.height时的大小差异是否与任何填充或边距匹配;IE使用不同的盒子模型,奇怪的事情发生了,我从来没有真正费心去记住:@Denis-我是什么。图片[curID]?@Neal那是img的DOM数组,不是jQuery。我在问题的底部添加了如何形成它们的代码。实际上,我没有imageID。我搜索我的图像以加载到特定div的子对象中,并将它们存储在数组中,以及将它们的src存储在单独的数组中,以备不时之需。实际上,我没有imageID。我搜索要加载到特定div的子对象中的图像,并将它们存储在数组中,以及将它们的src存储在单独的数组中,以备不时之需。