You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extensions are small software programs that can modify and enhance the functionality of the Chrome browser. You write them using web technologies such as HTML, JavaScript, and CSS.
如果英文过关,直接看 官方文档 就好了,写的还是很清晰简单的,可以直接跳到看最后的 【章节:程序分享与发布】。
What are extensions?
Chrome Extensions,中文名叫 “Chrome浏览器扩展程序”。引用官方文档的描述,翻译一下就是 “可以修改和增强浏览器功能的 H5 小程序”。
它的入口在浏览器窗口的右上角,地址栏的最右边,如下图:
一般来说,还可以有弹窗界面,比如下面这个:
Getting Started
开发环境
时间关系,我已经准备好一个 DEMO 了。
打开 DMEO 源码目录(包含
manifest.json
的那层),即可完成导入。完成以上步骤,就完成项目的导入啦,现在可以看到 DEMO 的效果了,如下。
同时,浏览器插件扩展程序入口(右上角地址栏右边)也会出来 DEMO 的图标了,如下。
试下点击图标看看,弹出来的就是
popup
了。OK,后面的事情,就根据文档也实现自己需要的功能就可以了。
manifest.json
manifest.json 是整个插件扩展程序中最重要的一个描述文件,这个 json 格式的文件包含了你整个扩展程序的一些重要描述,比如 “扩展程序名称”、“扩展程序图标”、“权限申请” 等。
下面给个官方的例子,加了点注释:
常用 API
Chrome 给插件扩展程序提供了一系列的 API,但其实我们平时常用的也就那几个。
程序分享与发布
当程序都开发完成了,想要发给小伙伴们体验下,可以怎么操作呢。
首先,要把程序打包
如图,点击 “打包扩展程序”。
第一个框需要定位到程序的根目录,也就是包含
manifest.json
文件的目录;第二个框是填一个私钥文件的(同一个私钥打出来的插件扩展程序包的 ID 相同),第一次打包时因为没有所以不填。
如图,第一次打包完成后,会生成一个私钥文件(*.pem),可以保存好这个文件,下次升级打包的时候就可以使用了,不然打包出来的 ID 会变了,Chrome 就会把它当成一个新的程序了。
另外,
*.crx
这个文件就是打包好的插件扩展程序了,这时你可以随意改名(别改后缀就行),然后发给其他人进行安装就可以试用你的这个程序了。怎么安装?
拿到
*.crx
文件后,Chrome 打开链接 chrome://extensions/,然后把*.crx
文件拖动到页面中间进行安装即可,如图。安装完成后,点击右上角的�入口图标,弹出来的界面就是插件扩展程序的主页面(popup)。
”此扩展程序可能已损坏“ 问题修复
好像是 Chrome 53 版本起就会有这个问题,为了防止扩展程式被病毒木马或恶意软件修改,Chrome的扩展程序安全验证机制, 会比对本地扩展和Chrome商店中的扩展是否一致,如不匹配就会出现这个错误。
解决办法
我们平时在开发过程中,
manifest.json
里不用写"update_url": "https://clients2.google.com/service/update2/crx"
的,但是从商店下载下来的包会自动带上这个,所以如果我们是用商店下载下来的包去修改做开发的话,记得要把这句删掉,不然生成的 crx 文件别人是用不了的。发布到 Chrome 商店
当一切准备就绪,就可以准备发布上线了,Chrome 有个官方的插件扩展程序市场,还自带了发布和更新等一体化管理的流程,非常方便,当然,需要先注册个 Chrome 账号。
传送门:【Chrome商店dashboard】
注意,上传的是
zip
而不是上面生成的crx
文件,具体参考:【https://developer.chrome.com/webstore/publish】实际例子(PP二维码扩展程序)
最后推广一个我很久之前刚学习前端的时候写的一个二维码扩展程序,还是挺好用的,有兴趣可以安装后直接查看代码(扩展程序都是开源的)。
常见问题
1. popup 页面在 Mac 上会有一个蓝框,如图:
这应该是一个 bug,经研究发现,它会自动给页面第一个
a
标签聚焦,从而产生蓝色的选择框,解决方法可以给页面最前面加上一个看不见的a
标签。2. ajax 网络请求跨域问题
这是一个很常见的问题,经常我们都会用到网络接口来请求数据,这时接口可能会有跨域同源限制,或者对
Origin
又或者对Referer
来做防盗链。另外,由于 CSP(contentSecurityPolicy) 问题,jsonp 也是用不了的。
解决方案:
Chrome 插件扩展程序 API 有提供了一个 webRequest 接口,可以通过它来修改发出去的网络请求的一些信息,比如
Referer
、Origin
等。首先,要在
mainfest.json
文件添加webRequest
的权限:然后,添加代码来修改
referer
信息:最后,要说明一下的是,以上的代码只能修改使用
fetch
发起的网络请求,而对xhr
的请求是没用的,所以,记得把请求库切换为fetch
,如:完成以上步骤,再请求一下看看,会发现请求的
Referer
已经会被修改了,这样,就再也不怕什么跨域的问题了。3. 引入外部
js
时报Refused to load the script
的问题在页面里引入一个
JS
,比如jquery
,在 Chrome 插件里会报错,比如:会报以下错误:
分析原因,还是 CSP(contentSecurityPolicy) 的问题。
解决方案
修改
content_security_policy
,把对应的域名加上去即可,比如以上的问题可以酱紫解决:附1:扩展程序的安装目录
Chrome 插件扩展程序是开源的方式安装的,可以去安装目录通过扩展程序 ID 来找到源码。
正常情况下,Chrome 插件扩展程序的默认安装目录如下:
C:\Documents and Settings\用户名\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions
C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default\Extensions
~/Library/Application Support/Google/Chrome/Default/Extensions
~/.config/google-chrome/Default/Extensions
如果在这些不同操作系统中的默认安装位置没找到插件,那么还有一种方法可以查询到。
chrome:version
extensions
文件夹就是 Chrome 插件扩展程序的安装路径了chrome://extensions/
,可以查看每个插件扩展程序的 ID,比如 “UC二维码插件” 的 ID 为nhelohnehpahakjoklmodmogclacjgdj
附2:资料参考:
The text was updated successfully, but these errors were encountered: