chrome.runtime.onInstalled 未定义

问题描述 投票:0回答:3

我想在安装扩展后启动这些选项。 以下是我在本例中尝试使用的针对此问题的许多答案。

我的问题是

chrome.runtime.onInstalled
未定义。 这是我的源代码:

背景.js

if(typeof chrome.runtime.onInstalled  !== 'undefined')
{
    chrome.runtime.onInstalled.addListener(function (details)
    {
        //if(details.reason == 'update') window.open(chrome.extension.getURL('options.html'));
        if(details.reason == 'install') window.open(chrome.extension.getURL('options.html'));
    });
}

我的清单.json

{
  "name": "Context Menu 2.0 for Google Translate™",
  "short_name": "Translate",
  "version": "1.0.0.4",
  "manifest_version": 2,
  "description": "Creates a context menu option to translate selected texts to a specified language",
  "icons": {
    "16": "trans_16.png",
    "64": "trans_64.png",
    "128": "trans_128.png"
  },
  "content_scripts": [
    {
      "matches":
      [
          "http://*/*", "https://*/*"
      ],
      "js": ["background.js"]
    }
  ], 
  "options_page": "options.html",
  "background": {
    "scripts": ["background.js"]
  },
  "permissions":[
    "http://*/*", "https://*/*",
    "storage","contextMenus"
  ]
}

我的清单中是否遗漏了某些内容,或者为什么该函数未定义? 我必须将支票包裹起来才能让我的附加组件正常工作。 否则我总是会收到一个错误,该错误会停止我的脚本的执行。

javascript google-chrome google-chrome-extension
3个回答
10
投票

出于某种原因,您尝试使用相同的脚本作为后台脚本和内容脚本。永远不要这样做,因为这会让人感到困惑,原因如下。我打赌您会在内容脚本中看到此错误。

内容脚本对 Chrome API 的访问非常非常有限;特别是,他们无法参加此活动。这也没有意义,因为内容脚本在扩展初始化时还不存在。


0
投票

如果有人和我有同样的问题,我也有同样的错误,问题是我的内容脚本中的导入语句。

导入语句从我的后台脚本中导入某些内容,由于某种原因,这意味着内容脚本试图理解它无权访问的后台脚本中调用的 API。我通过简单地将后台脚本的导出移动到单独的文件中解决了这个问题(尽管我确信有更好的方法):)。


-1
投票

我有同样的问题,问题是

chrome.runtime.onInstalled.addListener(...)
不可能是第一次使用
chrome.runtime

© www.soinside.com 2019 - 2024. All rights reserved.