img load在IE7和IE8中进入无限循环

时间:2011-09-19 16:58:58

标签: jquery internet-explorer-8 internet-explorer-7 infinite-loop jquery-load

我的页面中有以下代码,适用于所有浏览器(即使在IE9上),但在IE7和IE8上没有:

$.each($('.cic img'), function(index, value) {
  $(this).load(function() {
     // infinite loop here in IE7 and IE8
  });
});

HTML是:

            <div class="cic">
                <img wicket:id="image1" class="image1" />
            </div>
                            ...
            <div class="cic">
                <img wicket:id="image2" class="image2" />
            </div>

原因是在IE7和IE8上,加载功能进入无限循环,我最终得到的消息是:“由于脚本运行时间较长,此页面没有响应”。

编辑:将选择器更改为$('。cic img')。each()没有帮助。我还确认loadImageCropper()不是问题的原因。我也在上面的脚本之前键入$('。cic img')。lenght,它返回2,这是正确的。

上面的脚本和HTML正在加载AJAX。

我会感激任何帮助! 提前谢谢!

1 个答案:

答案 0 :(得分:0)

script element,IE8和fire old readyStateChange事件一样,而不是img src更新的标准加载事件,因此load事件掩盖了事件无法识别的事实。解决方案是在事件绑定之前分叉代码:

function imageSwap()
  {
  var $img = $('.cic img');

  if(!!document.addEventListener)
    {
    $img.on("load", loadTest)
    }

  else
    {
    $img.get(0).attachEvent("onreadystatechange", loadTest);
    } 

  function loadTest(event)
    {
    $img.show();
    }
  }