30.03.2018, 22:51
|
Новичок на форуме
|
|
Регистрация: 30.03.2018
Сообщений: 5
|
|
Делаю расширение под Хром, нужная вкладка засыпает, что делать что бы не засыпала?
Я делаю расширение для Chrome и на вкладку засылаю скрипт, что бы следил за изменениями. Все работает пока вкладка активна, но если вкладка становится неактивной то через неколько минут перестает скрипт работать. Если Я делаю эту вкладку активной (кликаю эту вкладку), страница загружается и моего скрипта нет на странице.
Думаю что страница засыпает и поэтому перестает работать.
Есть ли какие то способы не давать странице засыпать. Может есть какие то настройки или команды для гугл хрома? Подскажите пожалуйста или направьте где искать проблему?
Желательно что бы эти настройки могло мое расширение установить, а если не работает расширение, то все оставалось как и было.
|
|
30.03.2018, 23:55
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
вот вам магическое заклинание
setInterval(()=>alert('Я не сплю!!') ,1000);
|
|
31.03.2018, 12:25
|
Новичок на форуме
|
|
Регистрация: 30.03.2018
Сообщений: 5
|
|
Спасибо за подсказку, но это Вы предлагаете человеку, сидящему за компьютером не спать, а каждый раз нажимать Ок. За что Вы ненавидите людей?
Я просил помощи в вопросе, как не давать засыпать неактивной вкладке, на которой работает скрипт.
Если никто не знает, то может подскажете, как командами JS сделать неактивную вкладку активной, без обновления?
Пока нашел, что только новая вкладка может стать активной или если обновить вкладку, но при этом она перегружается.
Последний раз редактировалось kslabs, 31.03.2018 в 13:36.
|
|
31.03.2018, 15:12
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Глянуть страницу и скрипт хотелось бы. непонятно почему засыпает.
|
|
31.03.2018, 21:19
|
Новичок на форуме
|
|
Регистрация: 30.03.2018
Сообщений: 5
|
|
Мне непонятно, какую информацию это Вам даст. Неужели ни у кого страницы не засыпают?
Может я что то не вижу, вот, что бы зайти на страницу, надо зарегистрироваться, но может Вы зарегистрированы, даю ссылку: Вот ссылка
Вот код скрипта.
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
Последний раз редактировалось kslabs, 31.03.2018 в 21:31.
|
|
31.03.2018, 22:17
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от kslabs
|
Мне непонятно, какую информацию это Вам даст.
|
К сожалению не дало, не нашел никакого снотворного.
Сообщение от kslabs
|
Неужели ни у кого страницы не засыпают?
|
засыпают только вместе с компьютером.
|
|
31.03.2018, 22:19
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.
|
|
31.03.2018, 23:12
|
Новичок на форуме
|
|
Регистрация: 30.03.2018
Сообщений: 5
|
|
Сообщение от j0hnik
|
мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.
|
Спасибо за участие. Мне тоже странно что никто с таким не сталкивался.
Вот нашел статьи настроек браузера: 1, 2, 3 и ещё много подобных ссылок.
Может кто подскажет как эти настройки вводить JS командами?
Вот например цитата:
Цитата:
|
Ввести chrome://flags/#enable-tab-discarding в командной строке, переключить опцию в состояние Enable и перезапустить браузер.
|
Наверняка есть возможность командами JS установить настройки работы браузера.
Может кто подскажет оптимальный путь.
Очень не хочется из дополнения к браузеру придумывать как перегружать браузер.
Или делать отдельный контроль от засыпания вкладок.
Последний раз редактировалось kslabs, 31.03.2018 в 23:20.
|
|
31.03.2018, 23:29
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
kslabs,
это пробовали?
Цитата:
|
chrome://flags/#enable-offline-auto-reload-visible-only поставить "отключено"
|
|
|
01.04.2018, 20:59
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Браузеры могут оптимизировать фоновые вкладки путем ограничения лимита на ресурсы обработки. Это приводит к тому, что фоновые вкладки используют меньше ЦП и памяти, и, если её не хватает, то браузер может полностью выгрузить страницу в одной из фоновых вкладок, т. е. при переходе на ту вкладку обратно, она заново загрузится.
У вас страница засыпает, потому что это улучшение новых браузеров, которые могут замедлить или остановить работу в фоновых вкладках, чтобы продлить срок службы батареи или улучшить общую производительность работы браузера.
Service Worker позволяют оффлайн-приложения, push-уведомления, фоновую синхронизацию, и другое, что обычно для нативного установленного приложения. В браузерах, где уже поддерживется Service Worker и др., что нужно для веб-приложения, может применятся такая оптимизация (DOM не нужен, если на него не смотрят)
|
|
|
|