近期看到隔壁组开发写了一个Chrome扩展来提升Agile Planning的效率,动了也想鼓捣鼓捣的心思。然后上网百度(确实有点low了)一些资料来研究Chrome扩展具体是个啥东西~
主要参考资料来自于图灵社区的开源电子书籍:《Chrome扩展及应用开发》。感谢作者Sneezry和图灵社区的工作。其他的资料建议直接参考Google的官方文档:https://developer.chrome.com/extensions/getstarted 当然Google的东西还是需要自备梯子的,不方便使用梯子的看上面那本书来入个门应该够了。
Chrome扩展以及应用简单来说就是一系列文件的集合,这些文件包括HTML,CSS,JavaScript,图片以及manifest.json等。都是使用前端的技术开发,对于前端熟悉的同学在搞清楚基本结构和API之后应该可以轻松搞定。对于我这样的初级菜鸟来说,可以借这个机会结合实践来学习前端的知识。
扩展和应用是很像的东西,两者有很多共享的属性定义。扩展只能运行在Chrome内部,需要先运行Chrome再运行扩展。应用则可以直接调用Blink内核来独立工作。
在组成扩展或应用的一系列文件中,manifest.json是一个必备且必须叫这个名字的文件。这个文件是Chrome读取扩展/应用的入口,浏览器根据此文件来进行扩展的渲染。文件内容是按照一定格式描述的扩展/应用的相关信息,如扩展名称、版本、更新地址、请求的权限、扩展的UI界面入口等等。从文件的“扩展名”就可以看出,文件使用的是json格式来保存的信息,关于json格式的语法请自行百度~(很简单的)。
manifest中的大部分属性对于扩展和应用来说是共用的,个别的只能适用于其中一种,不能同时出现在同一个manifest文件中。
Chrome扩展的manifest必须包含:name, version, manifest_version
Chrome应用的manifest必须包含:name, version, manifest_version, app
其中manifest_version属性的值现在只能是2
其他常用可选属性有:browser_action, page_action, background, permission, options_page, content_scripts.
至此其实可以开始写一个很简单extension练手(例子来自上面那本书)。
目标是完成一个扩展,点击之后可以显示当前的时间。
首先是manifest.json文件
{ "manifest_version": 2, "name": "我的时钟", "version": "0.0.1.0", "description": "First Chrome Extension", "browser_action":{ "default_title": "My Clcok", "default_popup": "popup.html" } }
在上面的文件中,我们可以看到name属性定义了扩展的名称。description属性我们可以自己写一些对扩展的描述。version属性则定义了改扩展现在的版本,它最多可以有三个.分隔的四段数字组成,每段数字不超过65535且不能以0开头,但是可以为0. 如果扩展后续进行更新的话,新版本号必须比旧版本号高,比较顺序则从左向右分段比较。以上三个信息都将在扩展安装之后显示在Chrome的extension management页面。
browser_action属性指定扩展在浏览器中的行为。default_title为鼠标悬停在扩展图标上时显示的文字信息,default_popup是一个html文件地址,是指定扩展被点击后所显示的页面文件位置。
在看懂manifest中各个都是干嘛的之后,自然就该开始写那个popup.html
<html> <head> <style type="text/css"> * { margin: 0; padding: 0; } body { width: 200px; height: 100px; } div { line-height: 100px; font-size: 42px; font: Ariel; text-align: center; } </style> </head> <body> <div id="clock_div"></div> <script src="./my_clock.js"></script> </body> </html>
由于我们所显示的并不是一个完整HTML页面,所以其中省略了很多标准的tag,当然写出来也没问题,只是没啥用而已。另外值得注意的是其中通过script标签引用了一个外部的js文件。这是由于Chrome并不允许在HTML中直接嵌入JavaScript代码,inline-script也是被禁止的。所以引入外部js文件来实现事件以及元素与事件的绑定。
so……接下就需要实现那个my_clock.js
function my_clock(el){ var today = new Date(); var h = today.getHours(); var m = today.getMinutes(); var s = today.getSeconds(); m = m>10?m:('0'+m); s = s>10?s:('0'+s); el.innerHTML = h +":"+m+":"+s; setTimeout(function(){my_clock(el)},1000); } var clock_div = document.getElementById('clock_div'); my_clock(clock_div);
当当~~当~到此一个简单的显示时间的扩展就完成,将其加载到Chrome之中就可以看效果啦~(怎么加载?嘿嘿,你猜~~or百度一下?)
相关推荐
通常,Chrome扩展程序的结构包括一个manifest.json文件(描述扩展信息)、HTML、CSS、JavaScript代码以及其他可能的资源文件。用户可以通过解压此zip文件,然后在Chrome浏览器的扩展管理界面加载已解压的扩展来安装...
1. `manifest.json`:这是 Chrome 扩展的核心配置文件,定义了扩展的元数据(如名称、版本、权限等)以及扩展的行为。 2. `popup.html` 和 `popup.js`:分别代表弹出窗口的 HTML 结构和 JavaScript 逻辑,用户通常在...
首先,`manifest.json` 文件是每个Chrome扩展的核心配置文件,它定义了扩展的元数据、权限、功能和行为。例如,它会包含扩展的名称、版本号、描述、图标路径以及所请求的浏览器权限(如访问特定网站的权限或执行脚本...
2. **manifest.json**:这是Chrome扩展的配置文件,定义了扩展的元数据(如扩展名、版本、权限等),以及扩展与浏览器交互的方式。 3. **icon.png**及其变体(icon_128.png, icon_48.png, icon_32.png, icon_16.png...
1. `manifest.json`:这是扩展的配置文件,包含了扩展的基本信息,如扩展ID、版本号、权限需求以及加载的文件等。 2. `background.js`:后台脚本,常用于处理扩展的持久化任务和事件监听。 3. `content_script.js`:...
2. **manifest.json**:这是谷歌浏览器插件的核心配置文件,它定义了插件的元数据(如名称、版本、权限等)以及插件的行为和功能。 3. **LICENSE**:这通常包含插件的许可信息,说明了软件的使用条款和版权。 4. *...
Chrome清单装载机npm install --save-dev chrome-manifest-loader extract-loader file-loader 适用于Webpack的Chrome清单加载程序支持Chrome,Firefox和Opera manifest.json 导入manifest.json定义的资产将package....
自动填充manifest.json并创建适当大小的图标,因此您不必这样做。 在开发模式下,它还会在服务器的根目录处创建一个index.html ,以便在扩展的各部分之间轻松导航,并提供指向chrome中实际扩展页面的链接(例如...
它们通过manifest.json文件进行配置,并可以通过Chrome Web Store进行安装。 在"chrome-extension-network.zip"中,"chrome-network"文件夹很可能包含了实现网络请求的JavaScript代码和相关的HTML/CSS资源。Chrome...
1. **Manifest文件**:首先,Chrome APP的加载始于manifest.json文件。这个文件是APP的心脏,它告诉Chrome如何处理和运行你的应用。例如,你可以在这里声明需要的权限,如"permissions": ["storage", "alarms"],...
要创建一个清除缓存的扩展,我们需要编写一个manifest.json文件来定义扩展的基本信息,包括权限、背景脚本等。 在`manifest.json`文件中,我们需要声明以下权限: ```json { "manifest_version": 2, "name": ...
这通常包含了扩展的所有组成部分,如`manifest.json`(扩展的配置文件)、`background.js`(后台脚本)、`content_script.js`(内容脚本,用于与网页交互)、`popup.html`和`popup.js`(弹出窗口的HTML和JS),以及...
1. **Manifest文件**:每个Chrome插件都有一个manifest.json文件,它是插件的核心配置文件,包含了插件的基本信息、权限、内容脚本、背景页面等设置。 2. **内容脚本**:内容脚本可以在用户访问特定网页时运行,与...
1. `manifest.json`:这是Chrome扩展的核心配置文件,定义了扩展的元数据(如名称、版本、权限)以及扩展的行为,如注入的脚本、内容脚本、浏览器动作等。 2. `background.js`:背景脚本,通常用于处理扩展的持久性...
1. **Manifest文件**:每个Chrome插件都必须有一个`manifest.json`文件,它是插件的配置文件,包含了插件的基本信息,如名称、版本、权限、图标、内容脚本、背景脚本等。例如,要访问网页内容,你需要在`manifest....
这是一个浏览器扩展(插件)的基础框架,基于 Vue3、Chrome Extension V3、Tailwind CSS UI。 package.json 部分内容如下 "core-js": "^3.8.3", "vue": "^3.2.13", "vue-router": "^4.0.3", "vuex": "^4.0.0" ...
1. `manifest.json`:这是Chrome扩展的配置文件,定义了插件的元数据、权限、图标、背景脚本、内容脚本等信息。 2. `icons/` 目录:存储了插件的各种尺寸的图标,用于在浏览器界面中显示。 3. `scripts/` 目录:包含...
- `manifest.json`: 扩展的配置文件,定义了扩展的元数据、权限、内容脚本、背景脚本等信息。 - `popup.html`: 弹出窗口的HTML文件,通常用于用户界面。 - `popup.js`: 弹出窗口的JavaScript文件,处理用户的交互...
2. **编写manifest.json文件**:这是插件的核心配置文件,用于定义插件的基本信息,如名称、版本、描述、权限和功能。例如,一个简单的manifest.json可能包含插件的名称、版本、描述以及浏览器操作的默认图标路径。 ...