chrome extension 干货(记录中)

image.png

什么是Chrome插件

严格来讲,我们正在说的东西应该叫Chrome扩展(Chrome Extension),真正意义上的Chrome插件是更底层的浏览器功能扩展,可能需要对浏览器源码有一定掌握才有能力去开发。鉴于Chrome插件的叫法已经习惯,本文也全部采用这种叫法,但需知道本文所描述的Chrome插件实际上指的是Chrome扩展。

Chrome插件是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包,其实不只是前端技术,Chrome插件还可以配合C++编写的dll动态链接库实现一些更底层的功能(NPAPI),比如全屏幕截图。

公司在开发安全浏览器过程中,采用了chrome extension技术实现了标签页的替换,本文将针对标签页替换做简单介绍。

首先讲一下manifest.json插件配置文件

这是一个Chrome插件最重要也是必不可少的文件,用来配置所有和插件相关的配置,必须放在根目录。其中,manifest_versionnameversion3个是必不可少的,descriptionicons是推荐的。

示例:

{
  "manifest_version": 2,
  "name": "***",
  "version": "1.0.0",
  "default_locale":"zh_CN",
  "description": "__MSG_pluginDesc__",
  "icons": {
    "16": "img/icon.png",
    "48": "img/icon.png",
    "128": "img/icon.png"
  },
  "background": { // 可常驻浏览器后台的脚本,可以连接其他页面
    "scripts": ["js/background.js"]
  },
  "author" : {
    "name" : "L.PL",
    "birth" : 1991
  },
  "file_system_provider_capabilities": { // 使用chrome.fileSystemProvider API创建文件系统,可以从Chrome OS上的文件管理器访问。
    "configurable": true,
    "multiple_mounts": true,
    "source": "network"
  },
  //"page_action": {},// 图标显示在地址栏右侧,只在特定页面高亮
  "content_scripts": [// 所有页面注入content-scripts和原始页面共享DOM,但是不共享JS,如要访问页面JS(例如某个JS变量),只能通过injected js来实现
    {
      "matches": [
        "<all_urls>"// "<all_urls>" 表示匹配所有地址
      ],
      "js": [
        "js/content-script.js" //里面去引入inject.js实现“ 在页面上添加一个按钮并调用插件的扩展API ”需求
      ],
      "run_at": "document_start",// 代码注入的时间,可选值: "document_start", "document_end", or "document_idle",最后一个表示页面空闲时,默认document_idle
      "all_frames": true
    }
  ],
  "web_accessible_resources": [// 普通页面能够直接访问的插件资源列表,这些资源的访问URL是 chrome-extension://[PACKAGE ID]/[PATH],可通过调用chrome.extension.getURL构造出。 这些白名单资源
    "js/inject.js"
  ],
  "optional_permissions":[],//chrome.permissions.request 去请求权限,并且需要获得用户授权
  "offline_enabled": true,// 是否可离线
  "permissions": [ // 权限申请列表
    "management",// chrome.management 模块提供了管理已安装和正在运行中的扩展或应用的方法。对于重写内建的新标签页的扩展尤其有用
    "tabs", // 标签chrome.tabs
    "webRequest", // web请求
    "webRequestBlocking",
    "storage", // 插件本地存储
    "http://*/*", // 可以通过executeScript或者insertCSS访问的网站
    "https://*/*", // 可以通过executeScript或者insertCSS访问的网站
    "unlimitedStorage",//H5文件系统免于申请权限
    "background",//后台页面权限
    "topSites"//常用访问
  ],
  "chrome_url_overrides": { //只支持bookmarks、history、newtab三个页面
    "newtab": "newtab.html"
  },
  "minimum_chrome_version": "49",
  "content_security_policy": "script-src chrome://resources 'self' 'unsafe-eval';object-src 'none';child-src 'none'"
  //"platforms": ,// 可以将部分基于平台的功能文件放入_platform_specific目录然后列在此项中减少插件体积
  //"plugins": [{ "path": "extension_plugin.dll" }],// NPAPI插件已经支持,现在支持PPAPI
}

创建 newtab.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>新建标签页</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  <link href="./img/icon.png" rel="shortcut icon" type="image/x-icon">
</head>

<body>
<div id="app">
   Hello World!
</body>
</html>

在chrome 浏览器地址栏中打开chrome://extensions/ 打包扩展程序生成.crx安装包即可。
快点动手,实现自己的第一个Chrome扩展吧!

原创不易,点赞支持~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342