У меня проблема с тем, что мой фоновый скрипт всегда работает правильно и отправляет сообщение, но мой контент-скрипт не всегда получает это сообщение.
фоновый скрипт
chrome.webNavigation.onHistoryStateUpdated.addListener(details => {
chrome.tabs.query({ active: true }, tabs => {
const tabId = tabs[0].id
if (!tabId) {
return
}
console.log('sending message!', tabId)
chrome.tabs.sendMessage(tabId, { action: 'hello' }, response => {
console.log({ response })
})
})
})
скрипт содержания
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === 'hello') {
console.log('message received!')
sendResponse('message received in content script!')
}
})
Вот случай, когда он работает:
консоль сценария содержимого
консоль фонового скрипта
Когда я обновляю страницу, мой фоновый скрипт DOES отправляет сообщение, но мой скрипт содержимого не получает его.
консоль сценария содержимого
консоль фонового скрипта
Мне нужно было обновить страницу около десятка раз, прежде чем я наконец снова заработал:
консоль сценария содержимого
консоль фонового скрипта
Вот мой manifest.json
на случай, если он поможет:
{
"manifest_version": 2,
"name": "myproject",
"version": "0.1.0",
"background": {
"scripts": ["./npm-background.js"],
"persistent": false
},
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"content_scripts": [
{
"matches": [
"https://www.npmjs.com/*",
"https://npmjs.com/*"
],
"js": ["./npm-content.js"],
"run_at" : "document_end"
}
],
"permissions": [
"tabs",
"webNavigation"
]
}
Любой совет будет оценен, спасибо!