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>
我的理解是你有四个常用的基本扩展组件:
正在查看的选项卡的DOM 只能被访问content_scripts
content_scripts是manifest.json中标识的javascript文件数组,它们是按顺序直接注入选项卡的DOM中的.显然,选项卡和您的content_scripts中的JS变量和函数无法进行交互.
Chrome通过连接脚本数组生成的一个后台HTML页面OR被定义为一个页面,通常名为background.html.
{"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)
| 归档时间: |
|
| 查看次数: |
16351 次 |
| 最近记录: |