Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2018, 22:51
Новичок на форуме
Отправить личное сообщение для kslabs Посмотреть профиль Найти все сообщения от kslabs
 
Регистрация: 30.03.2018
Сообщений: 5

Делаю расширение под Хром, нужная вкладка засыпает, что делать что бы не засыпала?
Я делаю расширение для Chrome и на вкладку засылаю скрипт, что бы следил за изменениями. Все работает пока вкладка активна, но если вкладка становится неактивной то через неколько минут перестает скрипт работать. Если Я делаю эту вкладку активной (кликаю эту вкладку), страница загружается и моего скрипта нет на странице.
Думаю что страница засыпает и поэтому перестает работать.
Есть ли какие то способы не давать странице засыпать. Может есть какие то настройки или команды для гугл хрома? Подскажите пожалуйста или направьте где искать проблему?
Желательно что бы эти настройки могло мое расширение установить, а если не работает расширение, то все оставалось как и было.
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2018, 23:55
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

вот вам магическое заклинание
setInterval(()=>alert('Я не сплю!!') ,1000);
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2018, 12:25
Новичок на форуме
Отправить личное сообщение для kslabs Посмотреть профиль Найти все сообщения от kslabs
 
Регистрация: 30.03.2018
Сообщений: 5

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

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

Последний раз редактировалось kslabs, 31.03.2018 в 13:36.
Ответить с цитированием
  #4 (permalink)  
Старый 31.03.2018, 15:12
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Глянуть страницу и скрипт хотелось бы. непонятно почему засыпает.
Ответить с цитированием
  #5 (permalink)  
Старый 31.03.2018, 21:19
Новичок на форуме
Отправить личное сообщение для kslabs Посмотреть профиль Найти все сообщения от kslabs
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 31.03.2018, 22:17
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от kslabs Посмотреть сообщение
Мне непонятно, какую информацию это Вам даст.
К сожалению не дало, не нашел никакого снотворного.

Сообщение от kslabs Посмотреть сообщение
Неужели ни у кого страницы не засыпают?
засыпают только вместе с компьютером.
Ответить с цитированием
  #7 (permalink)  
Старый 31.03.2018, 22:19
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.
Ответить с цитированием
  #8 (permalink)  
Старый 31.03.2018, 23:12
Новичок на форуме
Отправить личное сообщение для kslabs Посмотреть профиль Найти все сообщения от kslabs
 
Регистрация: 30.03.2018
Сообщений: 5

Сообщение от j0hnik Посмотреть сообщение
мб. рони чего подскажет, он тут со времен всемирного потопа, видел много ужасов и несправедливости.
Спасибо за участие. Мне тоже странно что никто с таким не сталкивался.
Вот нашел статьи настроек браузера: 1, 2, 3 и ещё много подобных ссылок.
Может кто подскажет как эти настройки вводить JS командами?
Вот например цитата:
Цитата:
Ввести chrome://flags/#enable-tab-discarding в командной строке, переключить опцию в состояние Enable и перезапустить браузер.
Наверняка есть возможность командами JS установить настройки работы браузера.
Может кто подскажет оптимальный путь.
Очень не хочется из дополнения к браузеру придумывать как перегружать браузер.
Или делать отдельный контроль от засыпания вкладок.

Последний раз редактировалось kslabs, 31.03.2018 в 23:20.
Ответить с цитированием
  #9 (permalink)  
Старый 31.03.2018, 23:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

kslabs,
это пробовали?
Цитата:
chrome://flags/#enable-offline-auto-reload-visible-only поставить "отключено"
Ответить с цитированием
  #10 (permalink)  
Старый 01.04.2018, 20:59
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Психологическая деформация программистов DreamTheater Оффтопик 59 24.03.2012 05:03
О фрилансе (Личный опыт) free Оффтопик 105 18.08.2011 17:02