【问题标题】:Chrome Extension tab and contextmenu troubleChrome 扩展选项卡和上下文菜单问题
【发布时间】:2020-01-05 17:52:58
【问题描述】:

每当用户右键单击 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')
  }
})

我收到错误消息:
“未经检查的 runtime.lastError: 无法建立连接。接收端不存在。”

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    假设 contextmenu.js 在 manifest.json 的 "background" 部分和 content.js 在 manifest.json 的 "content_scripts" 部分中声明,发布的代码很好,但扩展有很多移动部件,所以问题出在其他地方。错误消息表示在发送消息时没有运行内容脚本,这可能在以下情况下发生:

    1. 页面仍在加载 - 要解决此问题,请在 manifest.json 的 content_scripts 部分添加 "run_at": "document_start" more info
    2. 最近安装或更新或重新加载了扩展,但未重新加载选项卡,请参阅content script re-injection after upgrade or install 或切换到程序注入,而不是在 manifest.json 中声明 content_scripts 部分,@987654323 @。
    3. 您在 iframe 内单击,但不允许内容脚本在 iframe 内运行 - 在 manifest.json 的 content_scripts 部分添加 "all_frames": true more info 并在 sendMessage 中指定 frameId,如下所示:

      chrome.contextMenus.onClicked.addListener((clickData, tab) => {
        const {frameId} = clickData;
        chrome.tabs.sendMessage(tab.id, {text: 'rightClicked'}, {frameId}, response => {
          console.log(response)
        });
      });
      
    4. 该页面根本无法运行内容脚本(例如 chrome:// 页面或其他扩展) - 一般无法修复,但对于个人用途,您可以使用 --extensions-on-chrome-urls 命令启动 Chrome行切换并将chrome://*/* 模式添加到content_scripts 部分的matches 列表中。

    5. 页面 URL 已列入黑名单 - 检查 chrome://policy 是否存在 runtime_blocked_hosts 并联系您的管理员

    【讨论】:

      【解决方案2】:

      我想通了。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-24
        • 2012-11-26
        相关资源
        最近更新 更多