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存储在单独的数组中,以备不时之需。