Chrome扩展程序无法在按下按钮时注入代码

时间:2016-09-02 12:40:02

标签: javascript html google-chrome-extension

我的简单Chrome扩展程序不起作用。具体来说,当我单击弹出窗口中的按钮时,不会显示任何警报。 这是我的manifest.json:

{"manifest_version": 2,
  "name": "Getting started example",
  "description": "This extension shows a Google Image search result for the current page",
  "version": "1.0",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab",
    "<all_urls>"
  ],
"web_accessible_resources": ["page.js"]}

我的popup.html:

<!DOCTYPE html>
<html>
  <head>
    <script src="popup.js"></script>
  </head>
  <body>
<button onclick = "a()">Alert!!</button>
</body>

</html>

我的popup.js:

function a(){
    chrome.tabs.executeScript({code: "page.js"});
}

最后,我的page.js:

alert("Hi from an extension!!");

然而没有警报框出现。发生了什么事?

1 个答案:

答案 0 :(得分:2)

  1. 嵌入式js代码无法在扩展程序页面内工作(popup.html中的onclick代码)。将其移至单独的文件并使用例如addEventListener。弹出窗口控制台中应该显示错误,不要忘记始终检查它:右键单击弹出窗口,然后Inspect
  2. 由于您正在使用"activeTab",因此无需"<all_urls>"

      

    当用户调用扩展时,activeTab权限为当前活动选项卡提供扩展临时访问权限 - 例如,通过单击其浏览器操作。对选项卡的访问将持续到导航或关闭选项卡为止。

         

    这可以作为许多用途的替代方案,但在安装过程中不会显示警告信息。

  3. code chrome.tabs.executeScript参数需要带有代码的文字字符串,而不是文件名。使用file参数。

  4. page.js是一个内容脚本,它不是作为<script>元素注入的,而是在"isolated world"中并行运行, 所以没有必要在&#34; web_accessible_resources&#34;中声明它。