1

我的页面中有以下代码,它适用于所有浏览器(甚至在 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 加载。

我将不胜感激任何帮助!先感谢您!

4

1 回答 1

0

script 元素一样,IE8 和下火的传统readyStateChange事件而不是用于 img src 更新的标准加载事件,因此加载事件掩盖了事件无法识别的事实。解决方案是在事件绑定之前 fork 代码:

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();
    }
  }
于 2013-09-11T18:14:09.427 回答