ThreegunD
@ThreegunD

Как передать переменные в injection script?

В background выполняется код

//Открытие сайта в новой вкладке
window.open("google.ru");
//Вставка кода в активную вкладку и последующая отправка на внедрённый скрипт значения
chrome.tabs.executeScript({code:" document.createElement('script');script.src = chrome.extension.getURL('lib/inject/script.js');document.head.appendChild(script); "});

chrome.tabs.query({}, function(tabs) {
      for (var i = 0; i < tabs.length; i++) {
        chrome.tabs.sendMessage(tabs[i].id, {
          command : "extEvSettingsUpdate"
        });
      }
    });


Сам скрипт lib/inject/script.js

chrome.extension.onMessage.addListener(function(request, sender, callback){
    if (!!request && !!request.command) {
        if (request.command === "extEvSettingsUpdate") {
            console.log("Принято!");
        }
    }
});

Этот скрипт выбивает ошибку Cannot read property 'onMessage' of undefined
В чём проблемесы?
Как передать значение из background.js во встраиваемый скрипт (lib/inject/script.js)?

Манифест
{
	"name": "Test",
	"description": "1234567890",
	"externally_connectable": {
      "matches": [ "https://*.google.com/*", ]
   },
	"version": "0.1",
	"manifest_version": 2,
	"icons":{
	"128":"icons/red.png"
	},

	"browser_action": {
      "default_title": "ThisIsGooood",
      "default_icon": "icons/red.png",
      "default_popup": "popup.html"
	  },

	"background": {
	  "page":"background.html"
	},
	"web_accessible_resources" : ["lib/inject/script.js"],
"permissions": [
	  "*://google.com/*",
		"tabs",
		"background" ,
		"storage",
		"alarms",
		"notifications",
		"activeTab",
		"webRequest",
		"webRequestBlocking"
	]
  • Вопрос задан
  • 628 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Как правильно оповещать контент-скрипты об изменении настроек расширения браузера?

#1UPD
Вот эту строку убрать:
//Вставка кода в активную вкладку и последующая отправка на внедрённый скрипт значения
chrome.tabs.executeScript({code:" document.createElement('script');script.src = chrome.extension.getURL('lib/inject/script.js');document.head.appendChild(script); "});

В манифест добавить это:
"content_scripts": [{
	"all_frames": false,
	"matches": ["*://*/*"],
	"js": ["lib/inject/script.js"],
	"run_at": "document_end"
}],
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы