Делаю расширение под Хром, нужная вкладка засыпает, что делать что бы не засыпала?
Я делаю расширение для Chrome и на вкладку засылаю скрипт, что бы следил за изменениями. Все работает пока вкладка активна, но если вкладка становится неактивной то через неколько минут перестает скрипт работать. Если Я делаю эту вкладку активной (кликаю эту вкладку), страница загружается и моего скрипта нет на странице.
Думаю что страница засыпает и поэтому перестает работать. Есть ли какие то способы не давать странице засыпать. Может есть какие то настройки или команды для гугл хрома? Подскажите пожалуйста или направьте где искать проблему? Желательно что бы эти настройки могло мое расширение установить, а если не работает расширение, то все оставалось как и было. |
вот вам магическое заклинание
setInterval(()=>alert('Я не сплю!!') ,1000); |
Спасибо за подсказку, но это Вы предлагаете человеку, сидящему за компьютером не спать, а каждый раз нажимать Ок. За что Вы ненавидите людей?
Я просил помощи в вопросе, как не давать засыпать неактивной вкладке, на которой работает скрипт. Если никто не знает, то может подскажете, как командами JS сделать неактивную вкладку активной, без обновления? Пока нашел, что только новая вкладка может стать активной или если обновить вкладку, но при этом она перегружается. |
Глянуть страницу и скрипт хотелось бы. непонятно почему засыпает.
|
Мне непонятно, какую информацию это Вам даст. Неужели ни у кого страницы не засыпают?
Может я что то не вижу, вот, что бы зайти на страницу, надо зарегистрироваться, но может Вы зарегистрированы, даю ссылку: Вот ссылка Вот код скрипта. console.log('Старт скрипт CS_Leaders'); var allNumbUrls = 0; // Всего ссылок на странице var flagLeadTag = 1; // Флаг готовности принять следующую ссылку/ 0:готов принять, не 0:не готов, ожидаем var numbTabs = 0; // текущий номер ссылки (количество уже откртых ссылок) var leaderUrlTabs =''; // текущая ссылка на новый таб var script = document.createElement('link'); //Старт вставки фавикона script.id = 'EmpowrFaviconNew'; script.href = 'http://www.empowr.techaid.online/images/empowr/favicon.ico'; script.rel = 'shortcut icon'; script.type = 'image/x-icon'; document.getElementsByTagName("head")[0].appendChild(script); // считываем имеющееся общее количество ссылок для открытия табов allNumbUrls = document.getElementsByClassName('TransportTableCellAlignLeft SubjectNameCell').length // устанавливаем номер первой ссылки numbTabs = 1; // Устанавливаем Url первой ссылки console.log('numbTabs:'+numbTabs,'allNumbUrls:'+allNumbUrls); //var leaderUrlTabs0 = document.getElementsByClassName('TransportTableCellAlignLeft SubjectNameCell')[numbTabs].getElementsByTagName('a')[0]; leaderUrlTabs = "'"+document.getElementsByClassName('TransportTableCellAlignLeft SubjectNameCell')[numbTabs].getElementsByTagName('a')[0]+"'"; console.log('leaderUrlTabs:'+leaderUrlTabs); saveStorage (); function saveStorage (){ chrome.storage.local.set({ // Сохраняем изменения 'allNumbUrls':allNumbUrls, 'flagLeadTag':flagLeadTag, 'numbTabs':numbTabs, 'leaderUrlTabs':leaderUrlTabs }); }; (function readStorageProfileLeader() { chrome.storage.onChanged.addListener(function (changes,namespace) { for (key in changes){console.log('Обновилось:'+key,'Было:'+changes[key].oldValue,'/Стало:'+changes[key].newValue); if (key =='flagLeadTag'){ flagLeadTag = changes[key].newValue; }; // флаг разрешения передачи ссылки if (key=='numbTabs'){ numbTabs = changes[key].newValue; leaderUrlTabs = "'"+document.getElementsByClassName('TransportTableCellAlignLeft SubjectNameCell')[numbTabs].getElementsByTagName('a')[0]+"'"; //console.log('Запомнили/flagLeadTag:'+flagLeadTag,'numbTabs:'+numbTabs,'leaderUrlTabs:'+leaderUrlTabs ); }; // номер таба для следующего url } if (flagLeadTag==0){ flagLeadTag = 1; console.log('Выдаем следующий/flagLeadTag:'+flagLeadTag,'numbTabs:'+numbTabs,'leaderUrlTabs:'+leaderUrlTabs ); saveStorage (); }; console.log('Закончился внутренний цикл чтения обновления'); }); console.log('Закончилась функцияreadStorageProfileLeader()'); })(); Если периодически кликать по вкладке, то скрипт долго работает. С бэкграунда постоянно идут запросы на нужные ссылки путем изменения значений chrome.storage.local И данные получает бэграунд оттуда же. Обмен происходит по событиям chrome.storage.onChanged.addListener |
Цитата:
Цитата:
|
мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.
|
Цитата:
Вот нашел статьи настроек браузера: 1, 2, 3 и ещё много подобных ссылок. Может кто подскажет как эти настройки вводить JS командами? Вот например цитата: Цитата:
Может кто подскажет оптимальный путь. Очень не хочется из дополнения к браузеру придумывать как перегружать браузер. Или делать отдельный контроль от засыпания вкладок. |
kslabs,
это пробовали? Цитата:
|
У вас страница засыпает, потому что это улучшение новых браузеров, которые могут замедлить или остановить работу в фоновых вкладках, чтобы продлить срок службы батареи или улучшить общую производительность работы браузера. Service Worker позволяют оффлайн-приложения, push-уведомления, фоновую синхронизацию, и другое, что обычно для нативного установленного приложения. В браузерах, где уже поддерживется Service Worker и др., что нужно для веб-приложения, может применятся такая оптимизация (DOM не нужен, если на него не смотрят) |
Часовой пояс GMT +3, время: 17:19. |