#jquery #google-chrome #settimeout
#jquery #google-chrome #settimeout
Вопрос:
итак, у меня есть этот скрипт, который просто вводит и выводит теги p и перебирает их. По какой-то причине, если я оставляю страницу открытой на некоторое время, они перестают исчезать и просто начинают накладываться друг на друга. Для этого требуется некоторое время, и я думаю, что это происходит только в Chrome.
$(document).ready(function(){
var current_quote = 0,
fade_interval = null,
num_quotes = $("#quotes p").length;
// Fade in the first quote.
$("#quote0").fadeIn(2500);
// Schedule for the inital fade out.
setTimeout(fadeQuotes, 6000);
function fadeQuotes() {
// Fade out the current quote.
$("#quote" current_quote).fadeOut(2500, function() {
// Fade in the next quote.
current_quote = (current_quote 1)
if(current_quote 1 > num_quotes)
{
current_quote=0;
}
current_quote = current_quote % num_quotes;
$("#quote" current_quote).fadeIn(2500);
});
// Set the fading interval, if it's not already set.
if (fade_interval == null) {
fade_interval = setInterval(fadeQuotes, 13010);
}
}
});
Комментарии:
1. Проблема в том, что движок Chrome версии 8 зависает javascript при переключении вкладок. Когда вы возвращаетесь назад, он запускает его в сверхбыстромем режиме. Это портит отображение. Я также ищу решение для этого.
Ответ №1:
Chrome устанавливает время ожидания min равным 1 секунде, когда страница находится на скрытой вкладке. Это немного странно.
Ответ №2:
Я не уверен, что это решение, однако некоторые избыточности в вашем коде могут вызывать проблему. Попробуйте это…
Демонстрация:http://jsfiddle.net/wdm954/beQxv/4 /
$(document).ready(function(){
// rotate quotes
$(function() {
var current_quote = 0;
$("#quote" current_quote).fadeIn(2500);
setInterval(function() {
$("#quote" current_quote).fadeOut(2500, function() {
current_quote ;
if (current_quote 1 > $("#quotes p").length) current_quote = 0;
$("#quote" current_quote).fadeIn(2500);
});
}, 5000);
});
}); //end doc ready
Комментарии:
1. Поэтому, даже если я запускаю ваш jsfiddle в Chrome, я вижу ту же проблему. Установите интервал в 1 секунду и посмотрите
2. Если ваш fadeIn равен 2500, а ваш fadeOut равен 2500, то ваш интервал должен быть не менее 5000.