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

    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('вызвать алерт', '*');
    Это сообщение сначала попадает в конктент-скрипт, а потом уже вполне себе спокойно уйдет в фоновый процесс, где активирует выполнение того кода, который вам нужно - необязательно алерта, можно что угодно.
    Ответ написан