2016-11-02 9 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

Возможный дубликат [Detect, если вкладка браузера активен или пользователь переключился в сторону] (http://stackoverflow.com/questions/19519535/detect-if-browser-tab-is-active-or-user -has-off-away) – madalinivascu

+0

Как раз в сторону - это было бы очень неприятным поведением –

+0

Слышали ли вы о 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

nope not working –

+0

Спасибо за вашу доброту и усилия, но все еще есть проблема. когда я обновляю страницу, я получаю заголовок, который я написал в тегах заголовка, как я хочу. Когда я открываю другую вкладку, ваш скрипт начинает работать, и названия начинают меняться, и это снова то, что я хочу. Но после этого, когда я возвращаюсь на сайт, сценарий просто приостанавливается и вместо того, чтобы получать исходный заголовок (который находится между тегами заголовка), я получаю последний заголовок, который показывался, когда я был на другой вкладке. Я просто не получаю оригинальное значение tilte назад –