问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Chrome扩展开发攻略:Chrome扩展插件是如何开发的?

发布网友 发布时间:2024-09-27 07:54

我来回答

1个回答

热心网友 时间:2024-10-20 20:03

前言

当你看到这篇文章说明你已经很好奇Chrome的各种扩展(插件)是如何开发创造出来的,你或许也在思考自己该从何下手才能掌握浏览器扩展的开发。那么,这篇文章将用一个Demo尝试满足你的好奇并解答你的疑惑。

基本知识

HTML标签的基本认识

CSS选择器和基本布局样式

JavaScript基本语法知识以及Dom操作

前端基础十分简单,如果你暂时没有前端开发的基本知识可以到MDN进行学习。

浏览器扩展WebExtensions扩展的能力

提升或补充网站的功能,比如稀土掘金为各位开发者提供的工具插件,提供包括记笔记等功能。

操控网页内容,诸如去除页面广告类扩展。

添加开发工具,有Vue和React的devTools,以及前端较为广泛使用的FeHelper。

为网页注入脚本,有用户脚本管理工具Tampermonkey。

扩展中的文件.├──icon│├──icon_120x120.png//不同大小的图片,用于在工具栏等处显示│├──icon_48x48.png│└──icon_80x80.png├──manifest.json//扩展必须包含的json文件,可以使用“//”写行注释├──popup.html//弹出页面├──scripts│├──background.js//后台运行的脚本文件│└──popup.js//用于操作Dom└──styles└──inline.css//样式

manifest.json这是唯一一个在每个扩展里面必须存在的文件。它包含了关于这个扩展插件基本的元数据(metadata),比如它的名字、版本和所需权限。并且,它也对扩展中其他文件进行了链接。

{"manifest_version":2,//指定扩展使用的manifest.json的版本"name":"文章浏览量增加器",//扩展的名称"short_name":"upCount","description":"自动刷新文章的浏览量",//扩展的描述信息"version":"0.1.0",//版本号"background":{//引入一个或者多个后台脚本文件,以及一个可选的后台页面文件"scripts":["./scripts/background.js"//引入的路径],"persistent":true//是否持续运行},"browser_action":{"default_icon":"./icon/icon_120x120.png","default_title":"文章浏览量增加器","default_popup":"./popup.html"},"icons":{"120":"./icon/icon_120x120.png","80":"./icon/icon_80x80.png","48":"./icon/icon_48x48.png"},"permissions":["activeTab","tabs","http://*/*","https://*/*"]}

popup.html弹出的页面inline.css引入的样式文件

popup.js用于操作Dom和与background.js通信

//获取Dom以便对其操作constsaveEl=document.querySelector('#save');conststartEl=document.querySelector('#start');constpauseEl=document.querySelector('#pause');consturlField=document.querySelector('#urlField');consttbody=document.querySelector('#urlTableData');constresetEl=document.querySelector('#reset');consttfootEl=document.querySelector('tfoot');//获取本地存储数据functiongetSites(){conststr=window.localStorage.getItem('sites')||'[]';returnJSON.parse(str);}//URL校验方法functioncheckURL(url){consturlReg=/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/;returnurlReg.test(url);}functionbuttonDisable(sites){if(sites.length){tfootEl.classList.add('hidden');resetEl.removeAttribute('disabled');startEl.removeAttribute('disabled');pauseEl.removeAttribute('disabled');}else{tfootEl.classList.remove('hidden');resetEl.setAttribute('disabled','disabled');startEl.setAttribute('disabled','disabled');pauseEl.setAttribute('disabled','disabled');}}functioncreateTbodyContent(sites){tbody.innerHTML='';for(letitemofsites){consttrEl=document.createElement('tr');trEl.innerHTML=`<tdclass='urlCol'title='${item}'>${item}</td><tdclass='operationCol'><divclass='del'id='${item}'title='删除${item}'>删除</div></td>`tbody.prepend(trEl)}}//接受background返回值并存储,同时确定按钮是否disabledfunctioncallbackSites(res){constsites=JSON.parse(res).sites;createTbodyContent(sites);window.localStorage.setItem('sites',JSON.stringify(sites));buttonDisable(sites)}//根据本地获取的url生成表格createTbodyContent(getSites());buttonDisable(getSites());//全局点击事件绑定document.addEventListener("click",(e)=>{if(checkURL(e.target.id)){chrome.runtime.sendMessage({type:'del',data:e.target.id},callbackSites);}switch(e.target.id){case'save':{if(urlField.value.trim()===''){alert('请输入URL');return;}letresult=checkURL(urlField.value.trim())if(result){chrome.extension.sendMessage({type:'save',data:urlField.value.trim()},(res)=>{callbackSites(res);urlField.value='';});}else{alert('你输入的URL不正确')}break;}case'start':{chrome.tabs.query({active:true,currentWindow:true},(tabs)=>{chrome.extension.sendMessage({type:'start',windowId:tabs[0].windowId,tabId:tabs[0].id,},(res)=>{window.localStorage.setItem('status',JSON.stringify(JSON.parse(res).status));console.log(JSON.parse(res).status);})})break;}case"pause":{chrome.extension.sendMessage({type:'pause'})break;}case"reset":{chrome.extension.sendMessage({type:'reset'},callbackSites)}}})
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我的电脑没有E/H/G,盘? 刚买的电脑无法创建d盘,不能指派驱动器号d:。只能指派abcefgh盘。创... ...了D盘的文件 卸载虚拟光驱后 计算机就成了CEFG盘 大 陈旧伤疤该用什么方法清除? 几年前被指甲弄到的疤痕,怎么让疤痕好了 opporeno5耳机模式怎么调试 最近想入手一块GTX770显卡 想入手一块GTX770的显卡 求各位大神推荐一下哪个性价比高 前提是要NV... 400×5的积末尾有两个零.___.(判断对错 如果积的末尾有一个0,则两个因数的末尾至少有一个0.___(判断对错) 正月开的花都有什么花 lightcontrol亮黄灯什么问题 Postman 还能做自动化接口测试?早学会早下班! 大灯故障灯是什么图标 河南特色美食肉焖子怎么做? 跨域产生的原因和解决方法(下一页word) 简述合同法关于格式条款的规则 金华磐安有哪些小学 如何基于WebComponents封装UI组件库 弯刀杀戮剧情介绍 《向往的生活》被质疑造假是有原因的,道具鱼这事,确实是冤枉了 散脂大将和田玉羊脂吊坠挂件---武将系列-和田玉资讯 cad2009申请号SY4E 1NQC AWYH VH53 Z32P QU7V 新人跪求激活码..._百... 苹果手机没电了怎么显示在充电呢? 弯刀杀戮还有第二步叫什么 苹果手机充电是什么充电标志 见龙祠地址在哪里? 豢龙祠祖居建庙 从南京火车站到上海徒步旅行能推荐一个路线吗?越详细越好!本人学生,第... 豢龙祠董父其人 电动车怎么启动开走 言情穿越小说女主名字是两个字,里有个襄字,然后跟哥哥在一起了_百度... 汽车大灯晃动有问题黄标 电脑上的H、 Z、 X、 B是什么意思? HYT HO新款手表怎么样? 推背拔罐的好处和坏处 小众的机械表有哪些品牌推荐? 三星note3三星输入法输入好点符号时显示的是英文的,如输入!时,应显示... note8的通知栏总出现输入法进行中.什么意思 实况足球2009上的任意球20到25米我光打人墙,就是练不出来。我喜欢用卡洛... 如何炖出营养健康的滋补佳品—鸽子汤 清炖鸽子汤的做法大全 您好啊,note3中输入法变成了手写的模式,怎么转换成拼音呢,没有转换的... pes2009如何任意球直接破门?简单点的。我玩实况足球不是很厉害。_百度... 实况足球2009任意球指教, uc浏览器4.0系统支持FLASH是什么意思 在京东商城买东西买到假货怎么办? 中国人寿保险有哪些品种 中国人寿保险品种列表这篇文章都帮你整理好了 09年钢材价格走势图哪儿有