Mat*_*ijs 3 google-chrome-extension content-script service-worker chrome-extension-manifest-v3
我正在尝试将消息从后台脚本发送到我的 chrome 扩展中的内容脚本。但看起来消息是在加载内容脚本之前发送的?
这是我正常使用扩展程序时遇到的错误:
Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist.
Run Code Online (Sandbox Code Playgroud)
这是我的后台脚本,其tabs.onUpdated功能为:
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.url) {
console.log(changeInfo.url, tabId)
chrome.tabs.sendMessage(tabId, {
url: changeInfo.url,
type: 'URL_CHANGE'
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的内容脚本接收函数:
chrome.runtime.onMessage.addListener((obj, sender, response) => {
console.log('received', obj)
if (obj.type === 'URL_CHANGE') {
console.log('testestsetst')
getAuth()
getUrlType(obj.url)
} else if (obj.type === 'AUTH') {
getAuth()
} else if (obj.type === 'UN-AUTH') {
removeAuth()
}
});
Run Code Online (Sandbox Code Playgroud)
每当我正常运行扩展时,我都看不到内容脚本的输出,并且收到如上所述的错误。但是,当我调试后台脚本并单步执行代码时,我没有收到错误,并且我的内容脚本正确打印了所有内容。这可能是由于页面需要加载造成的吗?如果是这样,我该如何解决这个问题?
Mat*_*ijs 13
通过检查 tab 是否完整并通过 tab 参数发送 url 来解决这个问题,如下所示:
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.status === 'complete') {
chrome.tabs.sendMessage(tabId, {
url: tab.url,
type: 'URL_CHANGE'
});
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9900 次 |
| 最近记录: |