如何开发一个chrome浏览器插件

这篇具有很好参考价值的文章主要介绍了如何开发一个chrome浏览器插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

chrome扩展程序

文件结构

manifest.json

html和css

js

加载插件

调试

总结


前言

当前,chrome浏览器早已成为占据最大的市场份额,也是综合体验最好的浏览器,开发人员使用的浏览器基本都以它为主。

我在使用chrome的过程中,积累增加了很多书签,最多的时候接近上千个,后续慢慢清退了一些。有一次在查看清理这些书签时,发现有些不太直观,于是就想着自己开发一个简单的chrome插件,用于时时统计这些书签。

这款插件也比较简单,功能有以下几个:统计总书签数、统计每个文件夹里的书签数量、统计常用技术站点的书签数量、最新增加的书签、最早增加的书签等。

具体的展示图如下:

如何开发一个chrome浏览器插件

通过这个扩展插件,我随时了解自己增加的书签,并进行学习后再清退一波。

所以,本文将通过这个简单的插件,介绍下如何开发一款chrome插件。

chrome扩展程序

chrome插件又称扩展程序,主要基于前端技术开发,用于扩展浏览器功能的一类软件程序,可以加载在chrome浏览器上运行。

在浏览器里也能打开扩展程序管理界面,查看到当前浏览器里安装的所有扩展程序。

扩展程序除了支持基本的前端WebAPI和JS-API以外,还拥有一些其他能力,如浏览器窗口、tab标签页、右键菜单、开发者工具、历史记录、下载请求、书签等等操作处理。这些对应的功能都有自己的chrome对象来处理,比如书签就会使用到  chrome.bookmarks 对象,它用于专门处理书签相关的数据和操作。其他的还有诸如 `chromes.tabs` tab标签对象、`chromes.history` 历史记录对象等等,很多个为扩展程序提供的专用API。

chrome扩展程序有两种:

  • 弹出窗口:点击按钮后有弹出窗口页面,可用于交互操作。
  • 后台程序:常驻在后台运行的脚本程序,随浏览器的关闭而关闭。

用户界面一般也有两种:

  • 浏览器按钮,Browser Actions,附着于浏览器整体的功能。
  • 页面按钮,Page Actions,附着于单独标签页面的功能,在特定的页面上才能使用。

本文的示例,书签插件就是用来整理书签的一个浏览器按钮性质的弹出窗口,下面将完整介绍这个扩展程序。

文件结构

首先,看一下该书签插件的文件目录结构:

如何开发一个chrome浏览器插件

通过上图,可以看到,文件结构比较简单:

  • manifest.json:插件的资源和功能配置文件
  • popup.html:插件窗口页面入口文件,弹窗页面
  • bookmarks.js:对应功能处理的js代码
  • popup.css:css代码
  • images/icon.png:图标资源,用于配置插件程序和按钮图标

这几个文件是开发chrome插件所需要的最基本的文件,其他的还可以使用诸如 locale国际化资源文件、模块文件等等。

由于我们的书签插件功能较简单,所以使用这几个基本文件就可以了。

manifest.json

manifest.json 配置文件,用于提供插件的基本信息,如版本、图标、标题、入口文件等等,如下所示,即为书签插件的基本配置。

{
  "manifest_version": 3,
  "version": "2.0",
  "name": "mybookmarks",
  "description": "a chrome extension for bookmarks",
  "icons": {
    "128": "images/icon.png",
    "16": "images/icon.png"
  },

  "action": {
    "default_title": "书签概览",
    "default_popup": "popup.html"
  },
  "permissions": [
    "bookmarks"
  ],

  "host_permissions": [
    "http://*/*",
    "https://*/*"
  ]
}

这里使用了manifest V3版本,相比较V2版本:

  • 增加了 action,取代之前的 browser_action 和 page_action
  • content_security_policy 配置有所变化,V3使用对象类型,取代V2的字符串
  • 增加了 host_permissions 专门处理主机权限,不再糅杂入 permissions 中
  • V3支持原生的 Promise,以及 async/await
  • V3不允许访问远程js或wasm文件
  • V3增加 declarativeNetRequestAPI 处理网络请求
  • V3的 Background Scripts 强制使用 Service Workers

从书签插件的配置可以看到:

  • 插件版本、名称、描述信息。
  • 插件的图标,引用自文件中的 images/icon.png,自定义一个合适的图片资源,但不支持SVG图片。
  • 插件在浏览器上的按钮标题,鼠标移动到按钮上面时会显示。
  • 插件的弹窗入口页面文件,popup.html。
  • 插件权限配置,需要处理 bookmarks 浏览器书签。

如何开发一个chrome浏览器插件

上图展示的是书签插件在浏览器上的按钮位置,通过 manifest.json 文件配置的 icon 图标和 default_title 鼠标hover描述。

html和css

插件的html文件,设置弹窗的页面结构,和一般的前端html页面一样,添加页面标签元素、引入js和css文件等等。

基本代码如下:

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>书签概览</title>
    <link rel="stylesheet" type="text/css" type href="./popup.css"></link>
  </head>
  <body>
    <div id="app">
      <div id="total"></div>
      <div id="menus"></div>
      <div id="sites">站点: </div>
      <!-- ... -->
    </div>
    <script src="./bookmarks.js"></script>
  </body>
</html>

我们的插件html代码中引入了 popup.css 样式文件和 bookmarks.js 脚本文件。

css文件也是一样,与平常我们写前端样式没有区别。

需要注意的是,js代码只能通过引入脚本文件的方式进行处理,不能在html中使用script内嵌脚本,否则会报错。

<script>
  console.log(3333)
</script>

如果使用上述方式增加js代码,则任何代码都不会被执行,并且会有非安全代码错误提示:

如何开发一个chrome浏览器插件

 文章来源地址https://www.toymoban.com/news/detail-474412.html

另外,也不得请求网络资源类型的js文件。

js

再来看一下js文件中的代码,本质上也与平时写的代码一样,支持es6语法,比如根据id读取页面上的元素,如下代码所示:

const app = document.getElementById('app')
const totalEl = document.getElementById('total')

我们的插件主要处理书签,chrome提供了 bookmarks 对象可以使用:

chrome.bookmarks.getRecent(10000, (results) => {
  totalEl.innerHTML = '总数:' + results.length
})

以上代码,即通过 bookmarks 对象的 getRecent 方法,获取到浏览器书签的总数量(这里默认书签总数小于10000,读取最近1万个书签数据)。

上面代码是使用的回调函数的方式获取结果,我们也可以使用 Promise 的方式调用:

chrome.bookmarks.getRecent(10000).then((results) => {
  totalEl.innerHTML = '总数:' + results.length
})

通过这种方式就可以获取到对应的书签总数量,其他的对书签进行不同的分类、统计最新或最早的书签信息,都可以通过书签对象来处理。

// 获取整个书签栏的树结构数据
chrome.bookmarks.getTree()
// 获取某个父节点下的所有子节点书签
chrome.bookmarks.getChildren(str)
// 根据条件搜索书签
chrome.bookmarks.search(str)

通过对书签对象的操作,可以基本完成我们插件对书签的统计和特殊书签的展示功能。

加载插件

到此,简单的书签插件就可以使用了,我们需要把插件代码加载到浏览器中,打开浏览器的扩展程序管理界面。

如何开发一个chrome浏览器插件

如上图所以,点击 加载已解压的扩展程序 按钮,直接加载源代码文件夹,即可完成扩展程序的加载导入。

上图中的 mybookmarks 2.0 就是我们的书签插件,已经顺利加载,就可以使用了。

调试

如果插件可以加载,但部分代码有错误,则会明示错误,可以点击查看:

如何开发一个chrome浏览器插件

调试插件代码,也比较简单,在弹窗页面上右键点击 检查,就会打开插件页面的开发者工具,和浏览器页面的开发者工具一样,可以进行代码调试工作。

如何开发一个chrome浏览器插件

打开的开发者工具,加载的就是弹窗入口页面:

如何开发一个chrome浏览器插件

总结

至此,我们的书签插件就开发完成,可以加载到浏览器中使用了。

功能虽然很简单,但也是依据chrome插件开发的各种规范,如果要开发更复杂的功能,就需要查看chrome插件开发规范中提供的各种API。或者使用前端web技术,扩展更多的功能也将是水到渠成的事情。

 

到了这里,关于如何开发一个chrome浏览器插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI选股】如何通过python调用通达信-小达实现AI选股(量化又多了一个选股工具,原文Chrome浏览器请改为Edge浏览器)

    ChatGPT火遍网络,那么有没有可以不用写公式就可以实现AI选股的方法?答案是有,今天我们就来试试通达信的小达,让小达按我们的要求去进行选股。 使用Chrome浏览器报错的请改为Edge浏览器,或者Firefox浏览器,参考如下文章: 【Python小技巧】browser_cookie3访问Chrome浏览器Co

    2024年02月11日
    浏览(81)
  • 谷歌浏览器(chrome)安装crx插件

    1、下载crx插件 2、插件扩展名改名为zip 3、解压zip文件 4、打开谷歌浏览器扩展程序 chrome://extensions/ 5、打开开发者模式,加载已解压的扩展程序,安装成功即如图展示    

    2024年02月11日
    浏览(34)
  • Chrome 浏览器插件 cookies API 解析

    前端开发肯定少不了和 cookie 打交道,此文较详细的介绍下 chrome.cookie 的 API 以及在 popup、service worker、content 中如何获取的 如果需使用 Cookie API ,需要在 manifest.json 文件中添加权限( Permissions )和主机权限( host_permissions )字段 比如,我需要获取 domain 为 .lkcoffee.com 的 cook

    2024年01月21日
    浏览(40)
  • Chrome浏览器安装Axure-Chrome-Extension插件

    Chrome 浏览器打开 Axure 生成的 HTML 静态文件页面时,会显示如下图 AXURE RP EXTENSION FOR CHROME ,这是因为 Chrom e 浏览器没有安装 Axure 插件 Axure-Chrome-Extension 导致的。 1.下载Axure-Chrome-Extension插件压缩包并解压: 2.打开Chrome浏览器,右上角菜单中找到 “扩展程序---管理扩展程序”;

    2024年02月22日
    浏览(30)
  • chrome浏览器必备5款插件--各个都好使--chrome基础

    办公电脑在使用固定期限后,又到了新换电脑的时候,本次新电脑到手后,在浏览器方面依然选择了已经熟悉的chrome浏览器,有一句话说的对,没有插件的chrome浏览器是没有灵魂的。所以在沿用chrome浏览器后,这次也对前期使用的chrome浏览器插件进行了重新的审视和用途的重

    2024年02月09日
    浏览(24)
  • chrome 谷歌浏览器 导出插件拓展和导入插件拓展

    给同事部署 微软 RPA时,需要用到对应的chrome浏览器插件;谷歌浏览器没有外网是不能直接下载拓展弄了半小时后才弄好,竟发现没有现成的教程,遂补充; 谷歌浏览器 地址栏敲 在对应的地址下,找到对应的插件存放位置; 在该文件夹中,对应id找到对应的文件 直接引用这

    2024年02月09日
    浏览(37)
  • 零编程经验,通过 GPT-4 十分钟开发了一个浏览器插件,并成功运行,实现了需求目标!

    大佬蓝鸟ID: sundyme 零编程经验,通过 GPT-4 十分钟开发了一个浏览器插件,并成功运行,实现了需求目标!太不可思意了,真正体会到了自然语言编程的魅力! 下一步是利用Pinterest 的 API 接口实现自动发图,已经生成好了代码和步骤(看着挺靠谱),等明天开发者权限审核下

    2023年04月08日
    浏览(30)
  • Chrome 浏览器安装Vue2、Vue3插件方法 (详细有效)

    因为谷歌商城需要翻墙,很多人进不去,无法下载vue插件。推荐一个好用的网站“极简插件”,里面有很多的谷歌应用插件可以下载。 下载插件地址 点击上方链接,在极简插件里搜索如图下载,根据自己需要进行下载。 点开扩展程序页面,方面后面把插件拖进去  以

    2024年02月12日
    浏览(39)
  • Chrome浏览器中的vue插件devtools的下载方式(使用Chrome应用商店/科学上网情况下)

    目录 devtools对前端来说的好处——开发预览、远程调试、性能调优、Bug跟踪、断点调试等  下载步骤:  测试阶段:  最近做项目要使用devtools这个vue插件。 首先先想个办法搞个加速器之类的,好实现科学上网。 在Chrome浏览器中访问以下网址: Chrome应用商店网址: https://c

    2024年02月14日
    浏览(30)
  • 谷歌chrome浏览器所有历史版本下载及selenium自动化控制插件资源分享

    使用python + selenium做网页自动化开发的小伙伴经常需要用到google chrome浏览器以及chromedriver插件。     谷歌浏览器所有历史版本下载链接: chrome历史版本,点击下载 chromedriver插件下载地址: 下载链接1:点击下载 下载链接2:点击下载 chromedriver插件与浏览器版本有对应关系,

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包