关于这个主题有很多悬而未决的问题,但我在我的案例中找不到解释。这是一个最小的测试用例:
这是我的manifest.json
{
"manifest_version": 3,
"name": "Test",
"version": "1.0",
"description": "Test extension",
"icons": {
"48": "dark.png"
},
"background": {
"service_worker": "button.js"
},
"permissions": [
"activeTab"
],
"action": {
"default_icon": "dark.png",
"default_title": "DarkTheme"
},
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"dark.js"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
按钮.js
chrome.action.onClicked.addListener(tab => {
console.log('clicked')
chrome.tabs.sendMessage(tab.id, { value: false })
});
Run Code Online (Sandbox Code Playgroud)
黑暗.js
chrome.runtime.onMessage.addListener(request => {
console.log('received', request)
})
Run Code Online (Sandbox Code Playgroud)
所以,基本上,我的监听器在一开始就设置好了,只有当我按下按钮时我才会发送消息。为什么我按下按钮时会收到此错误消息?
Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist. …Run Code Online (Sandbox Code Playgroud)