Chrome扩展程序背景页面html无效

Zen*_*nce 7 google-chrome-extension

我想了解chrome背景页面.我设法在对示例进行蚕食后运行background.js脚本,每次用户访问页面时都会弹出一个警告框.但是,当我使用相同的脚本并将其移动到background.html文件时,我似乎无法让文件执行.

我已将清单文件更新为页面(而不是脚本),并且扩展程序加载正常.我也尝试过直接在主体或函数中使用脚本标记中的javascript,因为它现在在主体或头部称为onload.

也许我不理解在Chrome扩展程序中使用background.html页面的概念?

清单文件:

{
  "name": "Testing Extension",
  "version": "0.2",
  "background": { "pages": ["background.html"] },
  "permissions": [
    "tabs", "https://mail.google.com/*", "http://*/*, https://*/*"
  ],
  "browser_action": {
    "name": "Do some action",
    "icons": ["icon.png"]
  },
  "manifest_version": 2,
  "web_accessible_resources": ["injectImage.js", "background.html"]
}
Run Code Online (Sandbox Code Playgroud)

injectImage.js

alert('Got Here');
'use strict';   
chrome.browserAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript(null, {file: "injectImage.js"});
});

    chrome.browserAction.setBadgeBackgroundColor({color: [0, 200, 0, 100]});

    var i = 0;
    window.setInterval(function () {
        chrome.browserAction.setBadgeText({text: String(i)});
        i++;
    }, 10);
Run Code Online (Sandbox Code Playgroud)

background.html

<!DOCTYPE html>
<html>
    <head>
        <script src="jquery-1.8.0.min.js"></script>
        <script src="injectImage.js"></script>
    </head>
    <body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

目前这个代码似乎除了在右上角放置一个图标之外什么都不做.

Dyl*_*ade 19

您的背景只有一页,就像本地服务器一样,可以在content_scripts和/ default_popup或其他扩展页之间发送和接收数据.

对于任何刚开始的人,请查看每个示例的清单版本,该版本在manifest.json中定义.版本2具有更严格的安全策略,并且内联javascript无效,因此复制样本v1代码并将其粘贴到background.html将不再有效.所有脚本都需要位于外部文件中,该文件可以使用src类似属性包含在HTML文件中<script src="main.js"></script>

我的理解是你有四个常用的基本扩展组件:

  1. 正在查看的选项卡的DOM 只能被访问content_scripts

  2. content_scripts是manifest.json中标识的javascript文件数组,它们是按顺序直接注入选项卡的DOM中的.显然,选项卡和您的content_scripts中的JS变量和函数无法进行交互.

  3. Chrome通过连接脚本数组生成的一个后台HTML页面OR被定义为一个页面,通常名为background.html.

  4. {"browser_action" : {"default_popup" : "popup.html"}}是manifest.json中定义的可选用户界面,当有人单击您的扩展图标时会显示该界面.弹出窗口无法访问选项卡的DOM,因此如果选项卡的内容很重要,则必须使用Chrome等消息来请求chrome.extension.sendMessage

您的背景定义为一个或多个scripts:

  "background": {
    "scripts": ["background.js"]
  },
Run Code Online (Sandbox Code Playgroud)

或者作为page:

  "background": {
    "page": "background.html"
  },
Run Code Online (Sandbox Code Playgroud)

如果要查看后台内部发生的情况,可以使用console.log但是为了检查输出,必须从"扩展"页面启动检查器.您甚至可以看到后台文件始终命名为"_generated_background_page.html".

在此输入图像描述


小智 2

您的清单文件中有拼写错误。包含背景页面应如下所示:

"background": {"page": "background.html"}
Run Code Online (Sandbox Code Playgroud)