Ошибка зацикливания jQuery в iOS

Почему разница между этими двумя строками кода создает ошибку, которая приводит к бесконечному циклу jquery в iOS(Safari и Chrome)? Цикл не произошел ни в одном другом браузере.

if ($('[name="loadingTime"]') != undefined) {...

против

if ($('.loadingTime') != undefined) {...

Когда мы нацелены на класс, а не на атрибут name, ошибка цикла исчезла. Есть идеи или объяснения?

1 ответ

После дальнейшего изучения ошибка была обнаружена в другой части кода. Вот что случилось:

  loadInterval: function() {
  var settimer = $('[name="loadingTime]').val();
  var interval = setInterval(function() {
    if (settimer == 0) {
      window.clearInterval(interval);
      $('[id^="interstitial-container"]').remove();
    };
    settimer--;
    if (settimer >= 0) {
      $('.ncount').text(settimer);
    }
  }, 1000);
}

в

var settimer = $('[name="loadingTime]').val();

мы пропустили закрывающую цитату после загрузки времени! который js возвратил как неопределенный, и iOS не обработал это изящно, так что var settimer не был установлен в ноль, поэтому всякий раз, когда вызывалась эта функция loadInterval, она была неопределенной, и мы проверяли, нужно ли нам загружать на основе неопределенного или нет. в нашем случае это не было и продолжало загружаться снова и снова, всегда получая неопределенный ответ, но без ошибки. Я думаю...

Другие вопросы по тегам