核心文件
manifest.json
文件是插件的核心,里面包含插件的信息,同时也是插件的入口,插件的重要配置都放在这里,例如这是一个非常简单的 Chrome 插件的 manifest 文件:
[root@liqiang.io]# cat manifest.json
{
"name": "Hello Extensions",
"description": "Base Level Extension",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_popup": "hello.html",
"default_icon": "hello_extensions.png"
}
}
可以看到除了声明这个插件的基本信息之外,这里还引用了两个文件,分别是 default_icon
和 default_popup
,icon 就是我们在插件列表中看到的图标,而 popup 就是我们在插件列表中点击这个插件图标之后会展示的页面,就这么简单地完成了一个插件的声明。
插件目录
一个简单的插件其实没有什么特别的目录结构,你可以将所有的文件都放在同一个层级,例如:
[root@liqiang.io]# tree
.
├── hello.html
├── hello_extensions.png
├── manifest.json
└── popup.js
但是,处于易于管理的习惯,我们通常会将不同的文件放置在不同的目录,例如这么组织:
[root@liqiang.io]# tree
.
├── README.md
├── images
│ ├── icon-128.png
│ ├── icon-16.png
│ ├── icon-32.png
│ └── icon-48.png
├── manifest.json
└── scripts
└── content.js
我们将图片专门放置在一个 images 目录下,将脚本专门放置在一个 scripts 目录下,这里没有 html,如果有的话,我们可以放在一个专门的 content 或者 html 目录中。当然这些都不是规范来的,我们可以根据自己的习惯来组织自己的插件目录,但是,最终目的都是一样的,方便管理即可。
一些 Tips
设置 popup 的位置
默认情况下,popup 出来的页面是紧贴着我们的插件图标的,例如:
图 :这个是图片说明 |
---|
但是,很多时候我们并不希望这个页面出现在这,比如翻译软件希望页面出现在划词的位置,一些播放插件希望出现在当前页面播放视频的下面位置,这个时候我们就希望能够定制一下这个页面的位置了。
很遗憾的是,Chrome Extension 并不支持自定义 popup 的位置,但是,要实现不同的效果,我们可以通过往当前 html 页面插入元素的方式来实现,例如我们在 content_scripts
中引用的 js 文件中加入以下内容:
[root@liqiang.io]# cat scripts/content.js
let div = document.createElement(div);
div.id = 'toolbar';
document.body.appendChild(div);
fetch(chrome.runtime.getURL('foo.html'))
.then((response) => response.text())
.then((data) => {
document.getElementById('toolbar').innerHTML = data;
});