2016-03-09 82 views
1

所以,我在这里有一个代码,当我在活动浏览器选项卡中查看它时,它工作得非常好。但是,只要我最小化或切换浏览器的其他选项卡(顺便说一句),代码就开始提出问题。这是下面的代码:当Tab不活动时JavaScript不工作

var a = document.getElementById("slidermain"); 
var b = a.getElementsByTagName("IMG"); 
var len = b.length; 

var noOpac = 0; 
var fullOpac = 10; 
var imgNumb = 0; 

function initFade(count){ 
    imgNumb = imgNumb + count; 
    if(imgNumb < 0){ 
     imgNumb = len; 
    } 
    if(imgNumb > len){ 
     imgNumb = 1;  
    } 
    elem = b[imgNumb-1]; 
    startFadeEffect(elem); 
} 

function startFadeEffect(elem){ 
    var opacSetting = noOpac/10; 
    if(noOpac > 10){ 
     opacSetting = 1;  
    } 
    elem.style.opacity = opacSetting; 
    elem.style.display = "block"; 
    noOpac++; 
    var timer = setTimeout(function() { startFadeEffect(elem); }, 55); 
    if(opacSetting == 1){ 
     clearTimeout(timer); 
     elem.style.opacity = 1; 
     noOpac = 0; 
     setTimeout(function() { endFadeEffect(elem); }, 2000); 
    } 
} 

function endFadeEffect(elem){ 
    var opacSetting = fullOpac/10; 
    if(fullOpac < 0){ 
     opacSetting = 0;  
    } 
    elem.style.opacity = opacSetting; 
    fullOpac--; 
    var timer = setTimeout(function() { endFadeEffect(elem); }, 55); 
    if(opacSetting == 0){ 
     clearTimeout(timer); 
     elem.style.opacity = 0; 
     elem.style.display = "none"; 
     fullOpac = 10; 
     return false; 
    } 
} 

function autoFade(){ 
    var loop = setInterval("initFade(1)", 4000);  
} 

请不就是我一直在寻找这个网站的答案,但主要是我发现的那些是基于JQuery的解决方案;不过,我正在寻找一种仅使用JavaScript的解决方案,我可能不必使用get new date函数。请不要将我的问题标记为重复,因为我已经做了好的研究。谢谢!

+0

我必须看到此发布版本。听起来很有趣,从来没有发生过这种事。另外,我非常怀疑上面的代码是造成这种情况的原因。我必须是你提供的代码之外的问题。另外..你正在经历的问题是什么? –

+1

[我怎样才能使setInterval也工作,当一个选项卡在Chrome中处于非活动状态?](http://stackoverflow.com/questions/5927284/how-can-i-make-setinterval-also-work-when-一个标签-是惰性-在铬)。另外,您需要详细描述“问题”。为什么你的问题**不是**重复的*“本网站几乎所有相关问题”*? – zero298

+0

我告诉你我正在寻找只有JQuery的JS解决方案! :(另外,我正在寻找一种解决方案,不需要现在或之前的对象。 –

回答

1

这不是你的JavaScript的问题,但与Chrome。当Chrome浏览器处于非活动状态时,Chrome会对其进行一些奇怪的操作。将代码添加到“修复混乱”,或者说不是选项卡处于活动状态,以在退出并返回后恢复。

+0

什么样的代码你有任何例子? –

+0

例如,你的计时器不会运行,只要你超时。您可以添加代码以将计时器与时钟同步以调整时间错误。 – thepiercingarrow