2016-11-02 13 views
2

我有以下的JavaScript使网页标题每五秒钟一次又一次改变。只有当用户在不同的选项卡上时,如何让一段Javascript工作?

<script> 
     var titleArray = ["TITLE-1","TITLE-2","TITLE-3","TITLE-4"]; 
     var N = titleArray.length; 
     var i = 0; 
     setInterval(func,5000); 
     function func(){ 
      if (i == 4) { 
       i = 0; 
      } 
      document.title = titleArray[i]; 
      i++; 
     } 

</script> 

我想,当用户以“吸引”他又开了不同的标签中,只工作/她回到我的site.While他/她是我的地盘我想这个JavaScript停止工作所以网页的标题就是我在标题标签中简单写的。

这里是我想要的摘要。

<script> 
if (the user is not on this tab but has opened and is using a different tab) 
{the javascript I have mentioned above}; 
elce {nothing so the title tags work}; 
</script> 

P.S:这是个好主意吗?有任何其他建议?我真的很喜欢开箱即用。

+0

的[检测如果浏览器标签是有源或用户已切换远]可能的复制(http://stackoverflow.com/questions/19519535/detect-if-browser-tab-is-active-or-user - 已切换) – madalinivascu

+0

就像旁边 - 这将是非常恼人的行为 –

+0

你是否听说过Page Visibility API https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API –

回答

0

请试试以下脚本。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    var isActive; 

    window.onfocus = function() { 
     isActive = true; 
    }; 

    window.onblur = function() { 
     isActive = false; 
    }; 

    // test 
    var titleArray = ["TITLE-1","TITLE-2","TITLE-3","TITLE-4"]; 
    var N = titleArray.length; 
    var i = 0; 
    function changeTitle(){ 
     if (i == 4) { 
      i = 0; 
     } 
     document.title = titleArray[i]; 
     i++; 
    } 

    setInterval(function() { 
     if(window.isActive !== true){ 
     changeTitle(); 
     } 
    }, 1000); 
</script> 
+0

没有工作 –

+0

谢谢你的好意和努力,但仍然存在问题。当我刷新页面时,我得到了标题中我写过的标题标签,就像我想要的那样。当我打开一个不同的标签时,你的脚本开始工作,标题开始改变,这又是我想要的。但在那之后,当我回到网站时,脚本停顿了,而不是获得原始标题(在标题标签之间),我得到了当我在另一个标签中时显示的最后一个标题。我根本没有得到原始的倾斜背部 –

相关问题