@dimonfreeman

Как в Chrome extension передать значение в chrome.alarms?

Как дернуть chrome.alarms с script внутри DOM.
хотел через переменную localStorage но туда нету доступа у хром апи чтоли.

Суть в том что если есть на странице елемент А
через время запустить chrome.alarms
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
dimonfreeman, понятно, ну вы вопрос бестолково задали, поэтому похоже я вам дал неверный ответ.

Если вам нужно запустить алерт на фоновой странице, то тогда алгоритм немного меняется. Проблема здесь в том, что сообщение в фоновой процесс (background.js) может передать лишь контент-скрипт (scripts.js) поэтому необходимо его использовать как посредника.

Итак, для начала в файле background.js ставите слушатель сообщений таким вот образом:
chrome.extension.onMessage.addListener(function(message) {
	
	console.log('Из контент-скрипта получено следующее сообщение: ' + message);
	
	if (message == 'вызвать алерт') {
		
		// Здесь впишите ваш код для вызова алерта
		
	}
	
});

Этот слушатель будет ожидать сообщений из контент-скрипта (script.js) и при получении сообщения с текстом "вызвать алерт" он выполнит тот код, который вы пропишите.

Далее, внутри контент-скрипта тоже нужен свой слушатель:
window.addEventListener('message', function(event) {
	
	// Извлекаем текст сообщения:
	var dom_message = event.data;
	
	console.log('Из DOM получено сообщение: ' + dom_message);
	
	// Пересылаем полученное сообщение
	// в фоновый процесс background.js:
	
	chrome.extension.sendMessage(event.data);
	
});

Этот слушатель будет ждать сообщений из DOM и пересылать их в фоновый процесс background.js

А вот теперь внутри DOM вы можете спокойно вызывать:
window.postMessage('вызвать алерт', '*');
Это сообщение сначала попадает в конктент-скрипт, а потом уже вполне себе спокойно уйдет в фоновый процесс, где активирует выполнение того кода, который вам нужно - необязательно алерта, можно что угодно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы