快速制作一个chrome插件

2023-11-16

说在前面

在我日常开发以及娱乐生活中,浏览器是我使用频率较高的一个应用,当我大学拥有第一部电脑开始,之后不论电脑换成什么,以及使用的是什么系统,我的首选浏览器都是Chrome,不仅仅是因为其速度快,更多是它丰富的扩展在吸引我,那么大家有没有想过如何自己来开发一个Chrome浏览器插件呢?是不是有的同学会觉得Chrome浏览器插件的制作难度会很大呢?今天就让我来带你们看看一个简单的Chrome浏览器插件的编写过程,并给大家制作一个简单的插件模板,大家可以通过模板来进行快速开发。

一、项目结构

一个完整的插件目录结构如下:

(一)html + js

1、manifest.json

简单配置,具体配置说明已在配置项后标出。

{
  "manifest_version": 2, //版本号,由google指定为2
  "name": "helloWorld", //插件名称
  "version": "1.0", //插件版本
  "description": "hello world 插件", //插件描述
  "icons": {
    //插件图标
    "128": "img/logo.jpg",
    "48": "img/logo.jpg",
    "16": "img/logo.jpg"
  },
  "browser_action": {
    "default_icon": "img/logo.jpg", //插件图标
    "default_popup": "default_popup" //点击图标后弹出的html互动文件
  },
  "content_scripts": [
    {
      "matches": ["<all_urls>"], //匹配url
      "js": ["bg.js"], //执行脚本
      "run_at": "document_start" //脚本运行时机
    }
  ],
  "permissions": ["tabs", "activeTab"] //权限申请
}

使用"content_scripts"你可以修改你当前访问的页面的dom,主要是靠js实现的,里面的"matches"是一个数组,里面装的是一些匹配的规则,意思就是当你的页面的地址满足数组里面的值的时候就会操作js文件,all_urls表示所有网页都会加载脚本。而"js"里面的是具体的操作,具体操作就是要自己写了。

2、popup.html

插件弹窗页,可以直接编写一个html页面,在manifest.json中的default_popup项进行配置即可。

<!DOCTYPE html>
<html lang="">
  <head>
    <title>helloWorld</title>
    <meta charset="utf-8" />
  </head>
  <body style="width: 200px; height: 200px">
    <h1 id="message">你好</h1>
    <input id="input1" type="text" />
  </body>
  <script src="js/popup.js"></script>
</html>

3、popup.js

插件弹窗页的脚本js代码,在popup.html页面中引入即可。

(function () {
  const input1 = document.getElementById("input1");
  const message = document.getElementById("message");
  input1.addEventListener("keyup", (e) => {
    message.innerHTML = "你好" + e.target.value;
    chrome.tabs.query({ active: true, currentWindow: true }, function (tab) {
      chrome.tabs.sendMessage(
        tab[0].id,
        {
          action: "hello",
          data: message.innerHTML,
        },
        function (response) {
          console.loig("收到回复:", response.state);
        }
      );
    });
  });
})();

4、bg.js

运行在浏览器打开tab窗体的脚本,需要在manifest.json中的content_scripts中进行配置。

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
  const { action, data } = request;
  console.log("%c Line:4 									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速制作一个chrome插件 的相关文章

随机推荐

  • java框架之ssh框架之认识

    SSH框架 1 SSH框架是什么 SSH框架是struts spring hibernate的一个集成框架 分为四层 表示层 业务逻辑层 数据持久层和域模块层 其中使用Struts作为系统的整体基础架构 负责MVC的分离 在Struts框架
  • 【实例分割】5、Look Closer to Segment Better

    文章目录 一 背景 二 动机 三 方法 3 1 Boundary Patch Extraction 3 2 Boundary Patch Refinement 3 3 Learning and Inference 四 实验 Paper ht
  • python语法-pyspark实战(数据输出)

    将RDD对象转化为python对象 1 collect算子 collect算子 功能 将RDD各个分区内的数据 统一收集到Driver中 形成一个list对象 用法 rdd collect 返回值是一个list 2 reduce算子 col
  • Jmeter实现登录不同的账号,去完成不同版本的业务流程

    一 思路 通过线程数量去控制你想要登录的用户数量 登录后获取可以区分不同业务流程的字段值 使用循环控制器 在循环控制器下添加if控制器从而去执行不同版本的业务流程 二 简单介绍一下思路中提到插件配置 线程组 方式一 方式二 2 获取登录后的
  • 百元买百鸡4

    题目 公鸡5元钱一只 母鸡3元钱一只 小鸡3只一元钱 用100元钱买一百只鸡 其中公鸡 母鸡 小鸡都必须要有 问公鸡 母鸡 小鸡要买多少只刚好凑足100元钱 思路 公鸡 母鸡 小鸡 100 5 公鸡 3 母鸡 小鸡 3 100 需要两个条件
  • 基于Java平台实现发送短信功能

    首先我们需要一个平台来帮助我们发送短信 而我们是调用它的接口 使用中国网建的SMS平台相对简单 因此需要去平台 https www smschinese com cn reg shtml 注册 1 跳转到注册页面并填写信息 2 注册后点击登
  • 申请软著详细流程

    相信有很多小白和本人一样不知道如何自己申请软著 只要耐心按照读完此文 保证自己可以独立申请啦 如果自己申请的话 目前软著登记是免费的 自己也就付个邮费 如果是加急的话 可以找三方代理机构办理 反正时间越短 价格越高 正常自己申请的话 最后拿
  • jQuery学习

    1 引入jqueryDownload jQuery jQuery 2 是jQuery的别称 以下两种等效 function div hide jQuery function jQuery div hide 3 jQuery对象和DOM对象
  • 线索二叉树(中序、先序和后序及遍历)

    链式存储 线索二叉树是二叉树的一类 在看线索二叉树之前我们先看一下二叉树的链式存储 一个二叉树的存储例子 后面用到的二叉树都是这棵 代码是这样的 public class BinaryTreeNode
  • 看看Docker Desktop WSL2 backend

    一 前言 这篇文章将通过 Docker Desktop 最新版以 WSL2 作后端 VirtualBox 和 VMware 最新版能和 Hype V 共存 等方面来表达笔者对微软重新认识 实际上笔者对 Docker 的使用也没多长时间 而且
  • 【包真】我的第一次webpack优化,首屏渲染从9s到1s

    大家好 我是猫小白 本文基于vue2 全文阅读大约需要3分钟 谈到webpack优化大部分人可能都看腻了 无非就那几招嘛 我之前也是看过许多类似的文章 但都没有自己真正上手过 下面是我用公司的项目真实操练下来的 首屏加载速度提升很大 刷刷的
  • tf-idf+lda分析多篇文章摘要

    import pandas as pd import numpy as np import matplotlib pyplot as plt import seaborn as sns plt rcParams font sans seri
  • 最常见的8个Android内存泄漏问题及解决方法

    作者 午后一小憩 在 Android 开发中 内存泄漏是一个常见的问题 这个问题可能会导致应用程序变慢 崩溃或者消耗大量的内存 最终导致设备性能下降 什么是内存泄漏 内存泄漏指的是应用程序中存在一些对象或者资源无法被垃圾回收器回收 导致内存
  • Linux获取文件属性

    以 rw rw r 1 ubuntu ubuntu 56 八月 1 19 37 1 txt 为例 一 stat函数 功能 获取文件的属性 函数原型 include
  • 根据数据生成地图并着色

    前言 我们有时会拿到一些数据与国家或者地区密切相关 故在地图上将其可视化会更为直观 同时也会提高数据分析的效率 利用Map绘制地图 以世界地图为例 数据形式如下 表中数据是我乱编的 一 导入必要的库 import pandas as pd
  • 数据连接池默认配置带来的坑testOnBorrow=false,cloes_wait 终于解决了

    转载地址 http blog csdn net soberchina article details 72953996 首先说一下自己程序中遇到的问题 前一段新写了一个项目 主要为方便公司业务切库做准备 为其他项目提供接口 spring b
  • mybatis中的分页插件原理过程说明

    首先了解一下mybatis到底帮了我们做了哪些事 1 封装jdbc操作 2 利用反射将java对象与sql语句之间的互相转换 mybatis的架构设计 1 接口层 2 数据处理层 参数映射 通过parameterHandler sql解析通
  • 框架分析(11)-测试框架

    框架分析 11 测试框架 专栏介绍 Selenium 框架特性 多语言支持 多浏览器支持 元素定位 页面操作 等待机制 浏览器控制 测试报告 并行执行 集成测试框架 优缺点分析 优点 开源免费 跨平台 多语言支持 强大的定位器 支持多种测试
  • C++线程安全map (低效率)

    map的并发操作是不安全的 C 里边有红黑树实现的std map和hash表 unordered map 在 C 并发编程实战 一书中的162页提供了一个细粒度锁的MAP数据结构 使用了 boost的shared mutex C 14已经支
  • 快速制作一个chrome插件

    说在前面 在我日常开发以及娱乐生活中 浏览器是我使用频率较高的一个应用 当我大学拥有第一部电脑开始 之后不论电脑换成什么 以及使用的是什么系统 我的首选浏览器都是Chrome 不仅仅是因为其速度快 更多是它丰富的扩展在吸引我 那么大家有没有
Powered by Hwhale