Я разрабатываю расширение для Chrome и Firefox и столкнулся с проблемой.
По сути, я пытаюсь получить сценарий содержимого для прослушивания сообщений с использованием chrome.runtime.onMessage.addListener(...)
, однако, похоже, это не работает.
Я проверил это, отправив сообщение из скрипта содержимого. У фонового сценария (ml.js
) был прослушиватель, который работал нормально, но lsitener в сценарии содержимого просто не получил сообщение.
Вы можете просмотреть код в этом Gist (или ниже).
manifest.json
:
{
"manifest_version": 2,
"name": "Messaging Extension",
"version": "1.0.0",
"background": {
"scripts": ["ml.js"]
},
"content_scripts": [
{
"matches": ["*://*.google.co.uk/*"],
"js": ["cs.js"],
"run_at": "document_end"
}
]
}
ml.js
:
// When receive message...
chrome.runtime.onMessage.addListener(function(message) {
if (message.key) {
console.log('ML: First message received')
// Send another message
chrome.runtime.sendMessage({
'foo': 'bar'
})
}
})
cs.js
:
// Send message to ml.js
chrome.runtime.sendMessage({
'key': 'value'
})
chrome.runtime.onMessage.addListener(function(message) {
console.log('CS: Second message received')
})
При тестировании в Firefox (загрузив надстройку в about:debugging и затем посетив Google) cs.js
отправил сообщение и ml.js
записал сообщение в консоль, однако cs.js
не записал сообщение.
Буду признателен за помощь, спасибо!