Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   выполнение скрипта в неактивной вкладке (https://javascript.ru/forum/events/72380-vypolnenie-skripta-v-neaktivnojj-vkladke.html)

parampam23 25.01.2018 00:22

выполнение скрипта в неактивной вкладке
 
Для страницы написал скрипт который меняет содержимое текстового поля и вызиваю focus() и blur() после чево кнопка сохранения становится активной и сохраняю. Но проблема в том что скрипт работает только в активной вкладке. Как можна решить ету задачу для неактивной вкладки?

j0hnik 25.01.2018 01:05

браузер смартфона?

parampam23 25.01.2018 01:17

браузер хром на пк

j0hnik 25.01.2018 01:29

должон пахать, напишите примерчик

parampam23 25.01.2018 14:31

var elements = document.getElementsByClassName('description');
        var keys=elements[0].textContent;
        document.getElementsByTagName('textarea')[0].value='';
        document.getElementsByTagName('textarea')[0].focus();
        document.getElementsByTagName('textarea')[0].blur();
        document.getElementsByTagName('textarea')[0].value=keys;
        document.getElementsByTagName('textarea')[0].focus();
        document.getElementsByTagName('textarea')[0].blur();
        document.getElementById("save_page").click();

я так понял что фокус на елементе не срабатывает если вкладка фоновая, в следствие кнопка сохранить неактивная.

j0hnik 25.01.2018 18:43

<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">

<script>
var inp = document.querySelectorAll('input'); 
var i = 0;
setInterval(function(){ 
i++; 
inp[i].focus();
},1000);
</script>


в этом примере каждую секунду фокус переносится в следующий инпут, перейдите на другую вкладку, подождите посмотрите что будет.

Dilettante_Pro 25.01.2018 18:52

j0hnik,
Строго говоря, фокус не переносится.
Для полноты добавьте inp[i].focus();

j0hnik 25.01.2018 19:04

ой не тот пример кинул

j0hnik 25.01.2018 19:33

<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">

<script>
var i = 0;
document.querySelector('input').focus();
setInterval(function(){ 
document.activeElement.value = i++;
document.activeElement.nextElementSibling.focus();
},500);
</script>


Вот более наглядный пример

parampam23 26.01.2018 01:01

Да фокус переносится. В моем случае проблема похоже в другому, если скрипт в активной вкладке работает то после изменения input и смещение фокуса срабатывает некое событие, которое проверяет изменились ли данные в поле если да то можна сохранять. А если в фоновой вкладке то такая проверка не происходит.
Можна както отследить которое собитие срабатыват в активной вкладке и запускать програмно в фоновой?


Часовой пояс GMT +3, время: 07:13.