0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

人人都能手写的chrome插件,帮我省了1000多块钱

京东云 来源:jf_75140285 作者:jf_75140285 2024-09-27 14:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在网购的世界里,价格波动常常让人感到无奈。《京东价保》插件通过定时监控已购商品价格变化,降价自动申请京东价格保护,帮我省下了不少钱。

作为一个前端开发工程师,这让我意识到,手写一个浏览器插件是一件很有趣且有意义的事。

于是,我决定尝试自己动手,开发一个简单的二维码生成器插件,各位小伙伴也可参考以下步骤实现自己想要的插件。

一、 为什么要手写浏览器插件

手写插件有许多好处,以下是一些详细的原因:

1.1 个性化定制

手写插件可以根据个人需求进行定制。市面上的插件功能可能不完全符合你的需求,而自己动手开发插件,可以精确地实现你想要的功能。

1.2. 解决特定问题

有时,你可能需要一个非常特定的功能,而现有的插件无法提供。手写插件可以帮助你快速解决这些特定问题,提高工作效率。

1.3 增强安全性

使用第三方插件时,安全性是一个重要的考虑因素。自己开发插件,可以确保代码的安全性,避免潜在的隐私泄露或恶意行为。

1.4 节省成本

虽然许多插件是免费的,但一些高级功能需要付费。通过手写插件,你可以免费获得这些功能,同时避免不必要的开支。

总之,手写插件不仅能带来技术上的成长,还能在日常生活中提供实际的便利和解决方案。

二、 如何手写浏览器插件

2.1 认识插件目录结构

一个 Chrome 插件通常包含以下文件和目录:

my-qrcode-plugin/
│
├── manifest.json  // 插件的配置文件,定义插件的基本信息、权限和功能。
├── background.js  // 后台脚本,负责处理插件的逻辑,例如创建右键菜单。
├── popup.html     // 插件的弹出页面,用户点击插件图标时显示。
├── https://www.elecfans.com/images/chaijie_default.png       // 插件的弹出页面,执行的脚本。
└── icons/         // 存放插件的图标,建议提供 16x16、48x48 和 128x128 像素的图标,不同大小的图标有不同的作用。
    ├── icon16.png
    ├── icon48.png
    └── icon128.png
    

2.2 编写 manifest.json

manifest.json 是插件的核心配置文件:

{
 "manifest_version": 3,
 "name": "QR Code Generator",
 "version": "1.0",
 "permissions": ["contextMenus", "activeTab", "scripting"],
 "icons": {
   "16": "icons/icon16.png",
   "48": "icons/icon48.png",
   "128": "icons/icon128.png"
  },
 "background": {
 "service_worker": "background.js"
  },
 "action": {
 "default_popup": "popup.html"
  }
}

2.3 编写 background.js

background.js 负责插件后台的逻辑实现:

chrome.runtime.onInstalled.addListener(() => {
 chrome.contextMenus.create({
   id: "generateQRCode",
   title: "Generate QR Code",
   contexts: ["page"]
 });
});

chrome.contextMenus.onClicked.addListener((info, tab) => {
 if (info.menuItemId === "generateQRCode") {
 const url = tab.url;
 const apiUrl = `https://api.cl2wm.cn/api/qrcode/code?text=${url}&mhid=sELPDFnok80gPHovKdI`;

 chrome.scripting.executeScript({
   target: { tabId: tab.id },
   func: showQRCode,
   args: [apiUrl]
 });
 }
});

function showQRCode(apiUrl) {
 const iframe = document.createElement('iframe');
 iframe.style.position = 'fixed';
 iframe.style.top = '50%';
 iframe.style.left = '50%';
 iframe.style.transform = 'translate(-50%, -50%)';
 iframe.style.width = '500px';
 iframe.style.height = '500px';
 iframe.style.border = 'none';
 iframe.style.zIndex = '1000'; // 确保在最上层
 iframe.src = apiUrl;

 document.body.appendChild(iframe);

 setTimeout(() => {
   iframe.remove();
 }, 5000);
}

2.4 编写 popup.html

popup.html 是插件的用户界面:

< !DOCTYPE html >
< html lang="en" >

< head >
 < meta charset="UTF-8" >
 < meta name="viewport" content="width=device-width, initial-scale=1.0" >
 < title >QR Code Generator< /title >
 < style >
 body {
   width: 500px;
   height: 500px;
   display: flex;
   justify-content: center;
   align-items: center;
   font-family: Arial, sans-serif;
 }

 #qrcode iframe {
   width: 500px;
   height: 500px;
   border: none;
 }
 < /style >
< /head >

< iframe id="qrFrame" src="" >< /iframe >

< script src="https://www.elecfans.com/images/chaijie_default.png" >< /script > < /body > < /html >

2.5 编写 https://www.elecfans.com/images/chaijie_default.png

https://www.elecfans.com/images/chaijie_default.png 是插件的用户界面的执行脚本:

document.addEventListener('DOMContentLoaded', function() {
 chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
 if (tabs.length === 0) {
   console.error('No active tab found');
   return;
 }

 const url = tabs[0].url;
 const apiUrl = `https://api.cl2wm.cn/api/qrcode/code?text=${url}&mhid=sELPDFnok80gPHovKdI`;

 const iframe = document.getElementById('qrFrame');
   iframe.src = apiUrl;
 });
});

2.6 验证插件功能

在浏览器上测试 Chrome 插件功能,可以通过以下步骤进行:

2.6.1. 加载未打包的扩展

1.打开 Chrome 浏览器。

2.输入 `chrome://extensions/` 进入扩展管理页面。

3.打开右上角的“开发者模式”。

4.点击“加载已解压的扩展程序”按钮。

5.选择你的插件目录(my-qrcode-plugin)。

2.6.2. 验证功能

1. 在任意一个网页中, 通过鼠标右键找到菜单 Generate QR Code, 点击该菜单,页面生成一个二维码,手机扫描二维码即是该网页,5S后二维码消失视为验证通过。

右键菜单截图:



wKgZomb2U6OAPV-KAAPotSlZS3c384.png



二维码生成效果图:

wKgaomb2U6SAGSyXAAPXow_xMAU879.png



2. 在浏览器右上角选择该插件《Generate QR Code》,在网页右上角生成对应的二维码,二维码不消失,视为验证通过。

右上角插件入口截图:

wKgZomb2U6aACXHJAAXImlSFgfw562.png



二维码效果图:

wKgaomb2U6eAQtARAAU5Ab7P90w192.png



2.6.3. 实时修改和刷新

1.在开发者工具中修改代码后,可以直接保存并刷新插件或页面以查看更改效果。

2.通过“重新加载”按钮在扩展管理页面中更新插件。

通过这些步骤,你可以在浏览器中高效地测试和调试 Chrome 插件的功能。

三、 插件发布到 Chrome Web Store

以下的发布谷歌插件的步骤

1. 创建开发者账号: 前往 [Chrome Web Store Developer Dashboard](https://chrome.google.com/webstore/developer/dashboard) 创建开发者账号。

2. 打包插件: 在 Chrome 浏览器中,进入扩展程序页面,点击“打包扩展程序”,选择插件的根目录进行打包。

3. 上传插件: 登录开发者账号,上传打包后的 `.zip` 文件。

4. 填写信息: 填写插件的详细信息,包括名称、描述、截图等。

5. 支付费用: 支付一次性注册费用:5美元。

6. 提交审核: 提交插件进行审核,审核通过后即可发布。

由于博主囊中羞涩, 就没有支付费用, 各位感兴趣的小伙伴可以通过以上步骤尝试去发布自己的插件,让更多的人看到。

四、 总结

本文通过《京东价保》插件给我带来的便利,引发了个人探索浏览器插件的思考。 通过实现一个简单的浏览器插件,帮助我们认识、掌握、应用浏览器插件的基本原理。更深入的知识咱们可以通过官网去学习。



最后,最重要的一点:

欢迎评论区互动, 大家一起来找bug。

欢迎大家交流学习,共同成长。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 前端
    +关注

    关注

    1

    文章

    245

    浏览量

    18850
  • 开发工程师
    +关注

    关注

    1

    文章

    91

    浏览量

    15384
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    声智科技语音交互插件上线ClawHub

    核心突破:填补生态空白近日,声智科技自主研发的语音交互插件,包含ASR(自动语音识别)与TTS(语音合成)正式通过ClawHub官方审核并接入服务;与此同时,声智自研的LLM(大语言模型)插件也已成功接入OpenClaw(龙虾)官方插件
    的头像 发表于 04-08 17:55 1144次阅读

    工作流插件节点节点说明

    插件节点用于在工作流中调用插件运行指定工具。 插件是一系列工具的集合,每个工具都是一个可调用的API。插件广场上架的插件或已上架的团队
    发表于 03-23 16:54

    【正点原子STM32N647开发板试用】--手写识别

    本篇讲述触摸屏手写识别数字及大小写字母。一.实现原理 触摸显示屏在有触摸时显示并记录触摸轨迹,触摸松开后,进行手写识别。 二.代码准备 1.屏显功能 RGB屏显示功能资源文件在Drivers
    发表于 02-01 18:26

    贴片电感相比于插件电感具有什么优势?

    小于传统插件电感。例如,常见的0402、0603等封装尺寸能够满足智能手机、可穿戴设备等对空间要求严苛的应用场景。通过优化内部结构,贴片电感在微小体积下仍能提供优异的电感值和电流承载能力。 2、高频特性好 :贴片电感具有较高
    的头像 发表于 12-18 14:13 506次阅读

    小凌派rk2006要连接这个舵机是怎么样弄啊,有没有人人教教我

    小凌派rk2006要连接这个舵机是怎么样弄啊,有没有人人教教我啊
    发表于 12-13 15:49

    3万字长文!深度解析大语言模型LLM原理

    继续追本溯源,与腾讯学堂合作撰写本文,尝试让人人都能懂大语言模型的基础原理。1、大语言模型简述截止到2025年“大模型”一般泛指“超大参数模型”,参数是指深度神经
    的头像 发表于 09-02 13:34 3610次阅读
    3万字长文!深度解析大语言模型LLM原理

    块钱让电视机从“单向播放”实现“双向互动”

    ”如何让传统电视机由单向内容传输变为“双向互相”,实现“主动感知、无感交互、精准服务”,成为终端厂商与方案商实现电视机智能升级的核心课题之一。一颗10块钱的24G雷
    的头像 发表于 08-11 12:04 1388次阅读
    几<b class='flag-5'>块钱</b>让电视机从“单向播放”实现“双向互动”

    解锁本地设备交互:机智云端插件接入Gokit5实战指南(音量/亮度控制)

    插件使用说明机智云端插件目前支持Gokit5的按键亮度调节、播放音量调节,可用于自然语言控制设备。1、端插件是什么端插件是扣子插件的一种类
    的头像 发表于 07-30 18:03 803次阅读
    解锁本地设备交互:机智云端<b class='flag-5'>插件</b>接入Gokit5实战指南(音量/亮度控制)

    基于LockAI视觉识别模块:手写数字识别

    手写数字识别是一种经典的模式识别和图像处理问题,旨在通过计算机自动识别用户手写的数字。 本文将教会你如何使用基于RV1106的 LockAI视觉识别模块进行手写数字识别。 源代码:https
    发表于 06-30 16:45

    基于LockAI视觉识别模块:手写数字识别

    手写数字识别是一种经典的模式识别和图像处理问题,旨在通过计算机自动识别用户手写的数字。本文将教会你如何使用基于RV1106的LockAI视觉识别模块进行手写数字识别。
    的头像 发表于 06-30 15:44 1269次阅读
    基于LockAI视觉识别模块:<b class='flag-5'>手写</b>数字识别

    用 VSCode 编写自己的 KiCad 插件(下)

    “  很多小伙伴都想自己开发 KiCad 插件,但不知从何入手。本文由华秋电子的另一位 KiCad 开发者波波同学撰写,分享了如何快速搭建环境,并开发一个简单的插件。  ”       所有环境配置
    的头像 发表于 06-19 11:44 3178次阅读
    用 VSCode 编写自己的 KiCad <b class='flag-5'>插件</b>(下)

    用VSCode编写自己的KiCad插件(上)详细步骤教程

    “  很多小伙伴都想自己开发 KiCad 插件,但不知从何入手。本文由华秋电子的另一位 KiCad 开发者波波同学撰写,分享了如何快速搭建环境,并开发一个简单的插件。  ” 目标     编写一个
    的头像 发表于 06-17 11:10 3405次阅读
    用VSCode编写自己的KiCad<b class='flag-5'>插件</b>(上)详细步骤教程

    FS2601手写擦写板集成IC中文手册

    电子发烧友网站提供《FS2601手写擦写板集成IC中文手册.pdf》资料免费下载
    发表于 05-30 15:35 0次下载

    液晶手写板像素缺陷修复及相关液晶线路激光修复

    引言 液晶手写板凭借便捷书写、环保节能等优势广泛应用于教育、办公等领域,然而像素缺陷会严重影响书写流畅度与显示清晰度。研究像素缺陷修复及相关液晶线路激光修复技术,对提升液晶手写板性能与用户
    的头像 发表于 05-19 09:36 1291次阅读
    液晶<b class='flag-5'>手写</b>板像素缺陷修复及相关液晶线路激光修复

    SDS1000CNL+/DL + 系列示波器真香体验

    SDS1000CNL+/DL + 系列数字示波器这台示波器彻底改变了我做实验的效率,不管是日常调试电路,还是研究复杂信号,都能轻松拿捏。
    的头像 发表于 05-09 13:39 890次阅读
    SDS<b class='flag-5'>1000</b>CNL+/DL + 系列示波器真香体验