img load переходит в бесконечный цикл в IE7 и IE8 - PullRequest
1 голос
/ 19 сентября 2011

На моей странице есть следующий код, который отлично работает во всех браузерах (даже в 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 функция загрузки переходит в бесконечный цикл, и я получаю сообщение: «Эта страница перестала отвечать из-за длительного выполнения сценария».

EDIT: Изменение селектора на $ ('. Cic img'). Each () не помогло.Я также подтвердил, что loadImageCropper () не является причиной проблемы.Я также набрал $ ('. Cic img'). Длина перед вышеупомянутым сценарием, и он вернул 2, что является правильным.

Вышеупомянутый сценарий и HTML загружаются с AJAX.

Буду признателен за любую помощь!Заранее спасибо!

1 Ответ

0 голосов
/ 11 сентября 2013

Как и для элемента сценария , IE8 и устаревших событий readyStateChange , а не стандартных событий загрузки для обновлений img src, поэтому событие загрузки маскирует тот факт, что событие не являетсяраспознан.Решение состоит в том, чтобы разветвить код перед привязкой события:

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();
    }
  }
...