Javascript Chrome扩展选项卡和上下文菜单故障

Javascript Chrome扩展选项卡和上下文菜单故障,javascript,google-chrome-extension,Javascript,Google Chrome Extension,每当用户右键单击chrome上的任何网站时,我都会尝试将消息从我的contextmenu.js文件发送到我的content.js文件 这将包括网站 -位于当前选项卡上且处于活动状态的 -这是弹出窗口,处于非活动状态 -这是弹出窗口,处于活动状态 -在另一个窗口上,并且处于非活动状态 -在另一个窗口上,并且处于活动状态 我的代码如下所示: //contextmenu.js chrome.contextMenus.onClicked.addListener((clickData, tab) =>

每当用户右键单击chrome上的任何网站时,我都会尝试将消息从我的contextmenu.js文件发送到我的content.js文件

这将包括网站 -位于当前选项卡上且处于活动状态的 -这是弹出窗口,处于非活动状态 -这是弹出窗口,处于活动状态 -在另一个窗口上,并且处于非活动状态 -在另一个窗口上,并且处于活动状态

我的代码如下所示:

//contextmenu.js
chrome.contextMenus.onClicked.addListener((clickData, tab) => {
  chrome.tabs.sendMessage(tab.id, {text: 'rightClicked'}, (response) => {
    console.log(response)
  })
})

//content.js
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  if (msg.text === 'rightClicked') {
    sendResponse('performing operation')
  }
})
chrome.contextMenus.onClicked.addListener((clickData, tab) => {
  const {frameId} = clickData;
  chrome.tabs.sendMessage(tab.id, {text: 'rightClicked'}, {frameId}, response => {
    console.log(response)
  });
});
我收到了错误消息: 未选中的runtime.lastError:无法建立连接。接收端不存在。

假设contextmenu.js在manifest.json的background部分声明,content.js在content_scripts部分声明,发布的代码可以,但是扩展有许多移动部分,所以问题在别处。错误消息表示在发送消息时没有运行内容脚本,在以下情况下可能会发生这种情况:

页面仍在加载-要修复此添加,请在manifest.json的content\u scripts部分中运行:document\u start。 扩展最近已安装、更新或重新加载,但该选项卡未重新加载,请参阅或切换到编程注入,而不是在manifest.json中声明content_scripts部分。 您在iframe内单击,但不允许内容脚本在iframe内运行-在manifest.json的content\u scripts部分中添加所有\u frames:true,并在sendMessage中指定frameId,如下所示:

//contextmenu.js
chrome.contextMenus.onClicked.addListener((clickData, tab) => {
  chrome.tabs.sendMessage(tab.id, {text: 'rightClicked'}, (response) => {
    console.log(response)
  })
})

//content.js
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  if (msg.text === 'rightClicked') {
    sendResponse('performing operation')
  }
})
chrome.contextMenus.onClicked.addListener((clickData, tab) => {
  const {frameId} = clickData;
  chrome.tabs.sendMessage(tab.id, {text: 'rightClicked'}, {frameId}, response => {
    console.log(response)
  });
});
页面根本无法运行内容脚本,例如chrome://页面或其他扩展-通常无法修复,但对于个人使用,您可以使用chrome URL上的-extensions命令行开关启动chrome,并将chrome://*/*模式添加到内容脚本部分的匹配列表中

页面URL被列入黑名单-检查chrome://policy 有关运行时\u阻止的\u主机的存在,请与管理员联系 我想出来了

我的代码没有问题。我只是没有匹配正确的URL,因为我在一个没有URL或URL的空白页面上测试onClickchrome://extension 它本身该代码适用于任何网站

//manifest.json
 "content_scripts": [
{
  "matches": ["<all_urls>"]
  ...
}