我正在开发一个 chrome 扩展,需要将消息从扩展背景页面发送到内容脚本,但无论我做什么,我都会收到以下错误: “未检查的 runtime.lastError:无法建立连接。接收端不存在。”后台脚本正在发送的消息正在由一个 API 获取,该 API 在每次 url 更改时运行。这是 manifest.json 文件:{ "manifest_version": 2, "name": "tool", "description": "help tool", "version": "1.0", "icons": { "16": "icons/icon16.png", "32": "icons/icon32.png", "48": "icons/icon48.png", "128": "icons/icon128.png" }, "page_action": { "default_icon": "icons/icon128.png", "default_popup": "src/popup.html", "default_title": "tool" }, "background": { "scripts": [ "src/background.js" ], "persistent": true }, "web_accessible_resources": [ "src/content.css" ], "content_scripts": [ { "matches": [ "https://*" ], "js": [ "src/jquery-3.4.1.min.js", "src/content.js" ], "css": [ "src/content.css" ] } ], "permissions": [ "tabs", "Api URL" ]}这是我在后台和内容脚本中使用的代码:background.js- callApi 通过 chrome.tabs.onUpdated.addListener 函数在每次 url 更改时被调用: chrome.tabs.onUpdated.addListener(() => { chrome.tabs.query({active: true, currentWindow: true},function(tabs) { var tab = tabs[0]; var url = tab.url; var para = "url=" + url console.log(para) callApi(para) }) }) const callApi = (para) => { var url = "API URL" + para fetch(url) .then((response) => { return response.text(); }) .then((data) => { console.log(data); connectToCurrentTab(data); }) } function getCurrentTabId(cb) { var query = {active: true, currentWindow: true}; chrome.tabs.query(query, function(tabArray) { cb(tabArray[0].id) }); }我能够在内容脚本中获取数据,但它也显示错误。谁能帮我解决这个问题?任何帮助是极大的赞赏。
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
问题得到解决。我正在使用复杂的过程将消息发送到内容脚本。onUpdate 函数也有错误。在 url 更改时调用 api 的正确方法是:
chrome.tabs.onUpdated.addListener(
function(tabId, changeInfo, tab) {
if (changeInfo.url) {
para = "url="+changeInfo.url
callApi(para)
}
}
);
谢谢你帮助我。
添加回答
举报
0/150
提交
取消
