前言

由于业务需求, 笔者要为公司开发几款实用的浏览器插件,所以大致花了一天的时间,看完了谷歌浏览器插件开发文档,在这里特地总结一下经验, 并通过一个实际案例来复盘插件开发的流程和注意事项.

你将收获

  • 如何快速上手浏览器插件开发

  • 浏览器插件开发的核心概念

  • 浏览器插件的通信机制

  • 浏览器插件的数据存储

  • 浏览器插件的应用场景

  • 开发一款抓取网站图片资源的浏览器插件

正文

在开始正文之前,我们先来看看笔者总结的概览:

如果对浏览器插件开发比较熟悉的朋友可以直接看最后一节插件开发实战。

1.入门

首先我们看看的浏览器插件的定义:

浏览器插件是基于Web技术(例如HTML,JavaScript和CSS)构建的可以定制浏览体验的小型软件程序。它们使用户可以根据个人需要或偏好来定制Chrome功能和行为。

要想开发一款浏览器插件,我们只需要有一个manifest.json文件即可, 为了快速上手浏览器插件开发,我们需要把浏览器开发者工具打开, 具体步骤如下:

  1. 在谷歌浏览器中输入chrome://extensions/

  2. 将开发者模式启动

  3. 导入自己的浏览器插件包

通过以上三个步骤我们就可以开启浏览器插件开发之旅了.浏览器插件一般放在浏览器地址栏右侧,我们可以在manifest.json文件配置插件的icon,并配置一定的规则,就能看到我们的浏览器插件图标了,如下图:

下面我们来具体讲解一下浏览器插件开发的核心概念.

2.核心知识点

浏览器插件一般涉及以下几个核心文件:

  • manifest.json 用来配置所有和插件相关的配置(必须放在根目录)

  • background.js 后台脚本(后台页面),生命周期和浏览器一致,一般放置全局代码

  • content-scripts 插件向页面注入脚本的一种形式,我们可以通过content-scripts向页面注入js和css资源,并可控制允许注入的范围

  • popup 点击插件图标后打开的自定义窗口, 用来处理用户交互

笔者画了一张简图来大致表示一下它们之间的关系:

接下来我们来具体了解一下以上几个核心知识点.

2.1 manifest.json

谷歌官网给我们提供了一份简单的配置,如下:

{"name": "My Extension","version": "2.1","description": "Gets information from Google.","icons": {"128": "icon_16.png","128": "icon_32.png","128": "icon_48.png","128": "icon_128.png"},"background": {"persistent": false,"scripts": ["background_script.js"]},"permissions": ["https://*.google.com/", "activeTab"],"browser_action": {"default_icon": "icon_16.png","default_popup": "popup.html"}
 }

各字段含义介绍如下:

  • name 浏览器插件名称, 将会在插件列表中显示

  • description 浏览器插件简介, 方便告诉开发者插件的功能和作用, 将会在插件列表中显示

  • version 浏览器插件版本

  • icon 浏览器插件图标

30分钟开发一款抓取网站图片资源的浏览器插件相关推荐

  1. 开发一款抓取Android系统Log的APP(logcat, kernel, Memory, cpu)

    近期项目需要一款抓取系统log的实用工具,具体的内容包括kernel中的log, cpu中的log,  memory 中的log, 以及system中的log,在Android4.1之后 认为应用读取 ...

  2. 如何在线把网站html生成xml文件_快速抓取网站信息工具

    网络信息抓取如今广泛运用于社会生活的各个领域.在接触网络信息抓取之前,大多数人会觉得这需要编程基础,也因此对信息抓取望而却步,但是随着技术的发展,诞生出了许多工具,借助这些工具我们编程小白也可以获取大 ...

  3. 利用wget 抓取 网站网页 包括css背景图片

    利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...

  4. 查询数据 抓取 网站数据_有了数据,我就学会了如何在几个小时内抓取网站,您也可以...

    查询数据 抓取 网站数据 I had a shameful secret. It is one that affects a surprising number of people in the da ...

  5. 阻止搜索引擎抓取网站的工具_使用PHP将抓取的网站转变为搜索引擎

    阻止搜索引擎抓取网站的工具 In the previous part of this tutorial, we used Diffbot to set up a crawljob which woul ...

  6. python爬虫抓取网站技巧总结

    不知道为啥要说是黑幕了??哈哈哈-..以后再理解吧 python爬虫抓取网站的一些总结技巧 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛 ...

  7. 10分钟开发一款“一键二次元化“AI小程序

    10分钟开发一款"一键二次元化"AI小程序 1. 创建人像卡通化应用 登录云开发平台.通过以下链接  https://workbench.aliyun.com/applicatio ...

  8. 抓取网站数据入库详解,附图文

    抓取网站数据入库详解,附图文 一. 分析需求 1.1 需求分析 刚好有这样一个需求,去抓取下方网站的页面全部数据,并存入MySQL数据库. 这个页面为: 爬取页面 年月日选择 出生于几点,性别: 男或 ...

  9. Python爬虫小偏方:如何用robots.txt快速抓取网站?

    作者 | 王平,一个IT老码农,写Python十年有余,喜欢分享通过爬虫技术挣钱和Python开发经验. 来源 | 猿人学Python 在我抓取网站遇到瓶颈,想剑走偏锋去解决时,常常会先去看下该网站的 ...

最新文章

  1. 如何使用pyecharts中自带的数据集?
  2. vue从入门到进阶:Vuex状态管理(十)
  3. 视频分类/动作识别数据库研究现状
  4. C++在数字N中找到精确除以N的数字的算法(附完整源码)
  5. Consumer group理解深入
  6. touch 修改文件时间戳,或者新建一个不存在的文件 - 副本
  7. 为啥我的Python这么慢 - 项查找 (二)
  8. PTA-7-5 打印杨辉三角 (20分)(C语言)
  9. 一本通1613打印文章
  10. JavaScript和HTML事件处理程序属性中的this的含义
  11. mysql8.0 创建用户并授权
  12. Android/Linux编译开关使用
  13. 计算机桌面图片查看,电脑中查看微软bing缤纷桌面中图片信息方法
  14. TP-LINKTL-WR845N和腾达W311R怎么设置wds桥接
  15. makefile碰到问题总结
  16. 测试 软通动力软件测试机试_软通动力2020春招软件测试笔试题以及答案
  17. 12306验证码识别 --- 2017-12
  18. windows 7 旗舰版下,安装vs2010旗舰版终于成功!
  19. 粉屏门又一次显示出了苹果的傲慢
  20. 女子打扮时尚穿短裙 被8岁儿子指责像二奶

热门文章

  1. Python(八) 正则表达式与JSON
  2. 如何解决Virtualbox和Mactype的冲突
  3. 微信文本消息html,微信公众帐号开发教程第8篇-文本消息中使用网页超链接
  4. MATLAB R2016a 安装教程
  5. 急急,Android如何显示账单总余额?!!!
  6. 南京大学计算机学院冯新宇导师,又一“利器”?华为被曝自研编程语言“仓颉” 传南大教授冯新宇是领头人...
  7. 逸仙电商逆流而上 国货化妆品的“进化与蝶变”
  8. 进入Web3.0的元宇宙新纪元,科技巨头争先“跑马圈地”
  9. 合肥计算机职业技术学校,合肥科技职业技术学校官网
  10. runtime error: reference binding to null pointer of type ‘int‘ (stl_vector.h)