chrome.runtime.onInstalled未定义

时间:2015-05-21 10:22:41

标签: javascript google-chrome google-chrome-extension

我想在安装扩展程序后启动选项。 以下是我在这种情况下尝试使用的这个问题的很多答案。

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

background.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'));
    });
}

我的manifest.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"
  ]
}

我在清单中遗漏了什么或者为什么函数没有定义? 我不得不把支票包起来让我的附加组件工作。 否则我总是会收到一个错误,它会停止执行我的脚本。

2 个答案:

答案 0 :(得分:5)

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

内容脚本have very, very limited access to Chrome API;特别是,他们无法使用此活动。由于内容脚本do not exist yet when the extension is initialized

,因此也没有意义

答案 1 :(得分:-1)

我遇到同样的问题,问题是chrome.runtime.onInstalled.addListener(...)无法首次使用chrome.runtime