Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Делаю расширение под Хром, нужная вкладка засыпает, что делать что бы не засыпала? (https://javascript.ru/forum/css-html/73236-delayu-rasshirenie-pod-khrom-nuzhnaya-vkladka-zasypaet-chto-delat-chto-ne-zasypala.html)

kslabs 30.03.2018 22:51

Делаю расширение под Хром, нужная вкладка засыпает, что делать что бы не засыпала?
 
Я делаю расширение для Chrome и на вкладку засылаю скрипт, что бы следил за изменениями. Все работает пока вкладка активна, но если вкладка становится неактивной то через неколько минут перестает скрипт работать. Если Я делаю эту вкладку активной (кликаю эту вкладку), страница загружается и моего скрипта нет на странице.
Думаю что страница засыпает и поэтому перестает работать.
Есть ли какие то способы не давать странице засыпать. Может есть какие то настройки или команды для гугл хрома? Подскажите пожалуйста или направьте где искать проблему?
Желательно что бы эти настройки могло мое расширение установить, а если не работает расширение, то все оставалось как и было.

j0hnik 30.03.2018 23:55

вот вам магическое заклинание
setInterval(()=>alert('Я не сплю!!') ,1000);

kslabs 31.03.2018 12:25

Спасибо за подсказку, но это Вы предлагаете человеку, сидящему за компьютером не спать, а каждый раз нажимать Ок. За что Вы ненавидите людей?
Я просил помощи в вопросе, как не давать засыпать неактивной вкладке, на которой работает скрипт.

Если никто не знает, то может подскажете, как командами JS сделать неактивную вкладку активной, без обновления?
Пока нашел, что только новая вкладка может стать активной или если обновить вкладку, но при этом она перегружается.

j0hnik 31.03.2018 15:12

Глянуть страницу и скрипт хотелось бы. непонятно почему засыпает.

kslabs 31.03.2018 21:19

Мне непонятно, какую информацию это Вам даст. Неужели ни у кого страницы не засыпают?
Может я что то не вижу, вот, что бы зайти на страницу, надо зарегистрироваться, но может Вы зарегистрированы, даю ссылку: Вот ссылка

Вот код скрипта.
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

j0hnik 31.03.2018 22:17

Цитата:

Сообщение от kslabs (Сообщение 481972)
Мне непонятно, какую информацию это Вам даст.

К сожалению не дало, не нашел никакого снотворного.

Цитата:

Сообщение от kslabs (Сообщение 481972)
Неужели ни у кого страницы не засыпают?

засыпают только вместе с компьютером.

j0hnik 31.03.2018 22:19

мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.

kslabs 31.03.2018 23:12

Цитата:

Сообщение от j0hnik (Сообщение 481978)
мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.

Спасибо за участие. Мне тоже странно что никто с таким не сталкивался.
Вот нашел статьи настроек браузера: 1, 2, 3 и ещё много подобных ссылок.
Может кто подскажет как эти настройки вводить JS командами?
Вот например цитата:
Цитата:

Ввести chrome://flags/#enable-tab-discarding в командной строке, переключить опцию в состояние Enable и перезапустить браузер.
Наверняка есть возможность командами JS установить настройки работы браузера.
Может кто подскажет оптимальный путь.
Очень не хочется из дополнения к браузеру придумывать как перегружать браузер.
Или делать отдельный контроль от засыпания вкладок.

рони 31.03.2018 23:29

kslabs,
это пробовали?
Цитата:

chrome://flags/#enable-offline-auto-reload-visible-only поставить "отключено"

Malleys 01.04.2018 20:59

Браузеры могут оптимизировать фоновые вкладки путем ограничения лимита на ресурсы обработки. Это приводит к тому, что фоновые вкладки используют меньше ЦП и памяти, и, если её не хватает, то браузер может полностью выгрузить страницу в одной из фоновых вкладок, т. е. при переходе на ту вкладку обратно, она заново загрузится.

У вас страница засыпает, потому что это улучшение новых браузеров, которые могут замедлить или остановить работу в фоновых вкладках, чтобы продлить срок службы батареи или улучшить общую производительность работы браузера.

Service Worker позволяют оффлайн-приложения, push-уведомления, фоновую синхронизацию, и другое, что обычно для нативного установленного приложения. В браузерах, где уже поддерживется Service Worker и др., что нужно для веб-приложения, может применятся такая оптимизация (DOM не нужен, если на него не смотрят)


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