Ошибка зацикливания 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, она была неопределенной, и мы проверяли, нужно ли нам загружать на основе неопределенного или нет. в нашем случае это не было и продолжало загружаться снова и снова, всегда получая неопределенный ответ, но без ошибки. Я думаю...