[关闭]
@forestsheep 2019-11-25T10:49:26.000000Z 字数 2518 阅读 180

Chrome扩展开发的简介与实战(2)

学习

优秀扩展介绍

crxMouse
商店地址

自定义扩展Icon的动作

按下Icon后,可以触发某些动作。或者打开一个弹出式的网页。

要追加这些操作,必须先申明,"Page Action" 或 "Browser Action"。
二者只能选一,不能都选。都不选就代表没有操作内容,这是允许的。

"Page Action" & "Browser Action"

两者差不多

都是指扩展的icon,差别不明显。但google对于两者的使用有一定的建议。具体参看两者各自的文档,有详细说明。

用一句话区别

其实两者的差别还是有点微妙,初期不宜展开。一定要用一句话区别的话,就是

只对少数网页敏感 --> Page Actions

大多数网页都敏感 --> Browser Actions

例如:
1. 我不喜欢youtube网站的背景色,我希望自定义一下。因为这是对少数网页感兴趣,所以应该用"Page Action"。
2. 只要发现网页上有图片,我希望一键下载所有图片。因为这是对大多数网页感兴趣,所以应该用"Browser Action"

实战 2-1: 更改kintone的背景色

首先,由于是对少数网页敏感,所以我们选用Page Action。

code

manifest.json

  1. {
  2. "name": "sample 3: action page",
  3. "version": "1.0",
  4. "description": "change kintone background color",
  5. "background": {
  6. "scripts": ["background.js"],
  7. "persistent": false
  8. },
  9. "page_action": {
  10. "default_icon": "icon.png",
  11. "default_title": "change color"
  12. },
  13. "permissions": ["declarativeContent", "activeTab"],
  14. "manifest_version": 2
  15. }

background.js

  1. chrome.runtime.onInstalled.addListener(function() {
  2. chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
  3. chrome.declarativeContent.onPageChanged.addRules([{
  4. conditions: [
  5. // When a page contains the 'cybozu.com/k/' url...
  6. new chrome.declarativeContent.PageStateMatcher({
  7. pageUrl: { urlContains: 'cybozu.com/k/' },
  8. })
  9. ],
  10. // ... show the page action.
  11. actions: [new chrome.declarativeContent.ShowPageAction()]
  12. }]);
  13. });
  14. });
  15. chrome.pageAction.onClicked.addListener(function(tab) {
  16. chrome.tabs.executeScript({
  17. code: 'document.body.style.backgroundColor="gray";document.getElementsByClassName("gaia-header-header")[0].style.backgroundColor="gray";'
  18. });
  19. })

icon资源

icon

功能

讲解

权限基础

manifest.json

  1. "permissions": ["declarativeContent", "activeTab"],

permissions: 表示我要申请权限。在chrome ext中很多动作都需要权限。没有权限是寸步难行。

申请权限时,我们遵循的原则是“够用即可”。只申请必要的权限,发现多余权限时要及时删除。

权限为什么不是越多越好?

权限越多,意味着能做的事越多,可能会产生以下后果

权限:declarativeContent

申明你的Page Action对于那些网页的url或网页中有某些特征(css特征等)的才会激活。

权限:activeTab

申明你对当前活动的tab具有操作权限。

在本例中,按下icon时改变背景色需要此项权限。

background中的操作

  1. chrome.runtime.onInstalled.addListener(function() { // 安装时
  2. chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { // 删除规则
  3. chrome.declarativeContent.onPageChanged.addRules(...) // 增加规则
  4. }
  5. })
  6. })
  1. chrome.pageAction.onClicked.addListener(function(tab) { // 点击icon执行
  2. chrome.tabs.executeScript({
  3. code: 'document.body.style.backgroundColor="gray";document.getElementsByClassName("gaia-header-header")[0].style.backgroundColor="gray";'
  4. }); // 这里也可以是file来指定js,css文件
  5. })

tips:找到画面元素的html代码的方法

HomeWork

更改整体搜索框的背景色

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注