我有一个定制的幻灯片对象来执行名称在网站上指示的常用内容。一切都很好,除非我在 Chrome 中切换标签并返回网站标签。当这种情况发生时,幻灯片会变得疯狂并开始淡化图像,而不管setInterval
给定的间隔。找不到与此相关的任何内容,所以我想至少知道这是代码问题还是软件问题。
这是代码(与 jQuery 一起使用):
$(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();
});