웹 사이트에서 이름이 나타내는 일반적인 작업을 수행 할 수있는 맞춤식 슬라이드 쇼 객체가 있습니다. Chrome에서 탭을 전환하고 웹 사이트 탭으로 돌아가는 경우를 제외하면 모두 잘 작동합니다. 이런 일이 발생하면 슬라이드 쇼가 진행되어 주어진 setInterval
간격을 무시하고 이미지가 흐려지기 시작합니다. 이것과 관련된 anyhing을 찾을 수 없으므로 적어도 코드 또는 소프트웨어 문제에 문제가 있는지 알고 싶습니다.크롬에서 setInterval이 제대로 작동하지 않습니다.
$(function() {
// slideshow
var slideshow = {
id : false,
current : 0,
count : 0,
interval : false,
init : function(data) {
if (!data)
return false;
$.each(data, $.proxy(
function(index, value) {
this[index] = data[index];
}, this)
);
this.count = this.images.length;
for (x=1;x<=this.count;x++)
$('#slider ul.nav').append('<li></li>');
$('#slider ul.nav li').live('click', function()
{
slideshow.click(this);
});
$('#slider ul.nav li:eq(0)').addClass('on');
$('#slider ul.nav').css('width', (15*this.count)+'px');
return true;
},
start : function() {
slideshow.id = setInterval(function() { slideshow.action(); }, slideshow.options.interval);
},
stop : function() {
clearInterval(slideshow.id);
},
action : function() {
slideshow.current < (slideshow.count-1) ? slideshow.current++ : slideshow.current = 0;
$('#slider img').fadeOut('normal', function() {
$('#slider img').attr('src', slideshow.images[slideshow.current].url);
$('#slider ul.nav li').removeClass('on');
$('#slider ul.nav li:eq('+slideshow.current+')').addClass('on');
$('#slider div.title').html(slideshow.images[slideshow.current].title);
$('#slider div.description').html(slideshow.images[slideshow.current].description);
$('#slider a.more').attr('href', slideshow.images[slideshow.current].target);
}).fadeIn('normal');
return true;
},
click : function(o) {
slideshow.stop();
var index = $('#slider ul.nav li').index(o);
slideshow.current = index;
$('#slider img').fadeOut('normal', function() {
$('#slider img').attr('src', slideshow.images[index].url);
$('#slider ul.nav li').removeClass('on');
$(o).addClass('on');
$('#slider div.title').html(slideshow.images[index].title);
$('#slider div.description').html(slideshow.images[index].description);
$('#slider a.more').attr('href', slideshow.images[index].target);
}).fadeIn('normal');
slideshow.start();
return true;
},
};
slideshow.init(slider);
slideshow.start();
});
성공하지 못한'setTimeout()'시도. Chrome 탭의 문제는 스크립트에 타임 스탬프의 차이를 지정하고 간격을 조정한다고해도 (console.log를 사용하면 변경되지 않았 음을 알 수 있습니다. Chrome에서 탭 처리가 멈추는 것으로 생각됩니다) . – yoda
답변보기 : http://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs/6032591#6032591 – thomasrutter
고맙습니다. – yoda