nob*_*ody 3 javascript css google-chrome-extension
我正在尝试制作一个Chrome扩展程序,该扩展程序将监视GMail并在用户开始编写消息时执行某些操作。在研究了示例和文档之后,我发现我应该使用declarativeContent来完成此任务,该声明会在页面更改时做出反应。
这就是我现在所做的。
manifest.json:
{
"manifest_version": 2,
"name": "Gmail helper",
"version": "0.1",
"permissions": [ "declarativeContent" ],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
Run Code Online (Sandbox Code Playgroud)
background.js:
chrome.runtime.onInstalled.addListener (function (details) {
chrome.declarativeContent.onPageChanged.removeRules (undefined, function () {
chrome.declarativeContent.onPageChanged.addRules ([{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostEquals: 'mail.google.com', schemes: ['https'] },
css: ["div"]
// css: ["div[aria-label='Message Body']"]
})
],
actions: [ new chrome.declarativeContent.RequestContentScript({js: ["content.js"]}) ]
}]);
});
});
Run Code Online (Sandbox Code Playgroud)
content.js:
alert ("Test");
Run Code Online (Sandbox Code Playgroud)
我的计划是声明一个内容脚本,该脚本将触发GMail中的页面更改。我添加了一个声明性规则,其中定义了pageURL,css和action。根据我的理解,应该在pageUrl和CSS内容匹配时执行content.js。但是,不会执行content.js。
我究竟做错了什么?
谢谢。
在网站上运行内容脚本需要该网站的权限,declarativeContent API文档中没有明确说明该权限,但是可以通过缺少“此操作无需主机权限就可以使用”注释来推断,该注释在其他网站上也存在。动作。declarativeContent API的目的是在没有任何权限确认警告的情况下从WebStore安装扩展,因此,除非您在清单中明确添加了该API,否则该API自然不会授予您访问mail.google.com的权限:
"permissions": ["declarativeContent", "https://mail.google.com/"]
Run Code Online (Sandbox Code Playgroud)
小智 5
从任务描述中可以看出,您不需要declarativeContent。
如果已打开GMail页面,则需要向页面添加内容脚本,并且需要在内容脚本中向消息编辑器DOM元素(或需要跟踪的任何其他元素)添加侦听器。
假设您知道第二步,要向GMail页面添加内容脚本,需要在清单中添加以下内容:
"content_scripts": [
{
"matches": [
"https://mail.google.com/*"
],
"js": ["content.js"]
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您也不需要后台脚本和权限。
注意:尽管您不需要指定权限,但是您的扩展程序将需要向用户询问权限。在安装过程中,Chrome会警告用户,您的扩展程序将有权访问页面上的所有用户数据,以使该用户可以在不同意的情况下取消安装。
| 归档时间: |
|
| 查看次数: |
2450 次 |
| 最近记录: |