1分钟制作简单chrome扩展应用

今天闲而无事,就玩起Chrome扩展应用来着,当然简单的扩展应用是很简单的,下面就进行简单的介绍。

所需知识

  • 一点点JSON
  • 一点点HTML
  • 一点点CSS
  • 一点点JS

总而言之言而总之,做一个简单的Chrome扩展应用是基本不需要什么工作量的。不清楚以上知识的请移步到 w3cschool 。

文件结构

其中主要文件包括:

  • 图像文件images
  • html文件
  • 配置文件manifest.json
  • js文件。

扩展被安装后,Chrome就会读取扩展中的manifest.json文件,这个文件的文件名固定为manifest.json,内容是按照一定格式描述的扩展相关信息,如扩展名称、版本、更新地址、请求的权限、扩展的UI界面入口等等。这样Chrome就可以知道在浏览器中如何呈现这个扩展,以及这个扩展如何同用户进行交互。

需求介绍

由于是简单的Chrome扩展应用,因此仅仅是实现一个显示当前时间的扩展应用,当用户点击时钟图标时,会显示当前时间。

代码实现

首先创建一个clock文件夹,包含以下内容:

  • 一个images文件夹
  • 一个js文件夹
  • 一个manifest.json文件
  • 一个popup.html文件。

首先,我们需要了解manifest.json都有哪些内容:

 1 {
 2 // 必须的字段
 3   "name": "My Extension",
 4   "version": "versionString",
 5   "manifest_version": 2,
 6   // 建议提供的字段
 7   "description": "A plain text description",
 8   "icons": { ... },
 9   "default_locale": "en",
10   // 多选一,或者都不提供
11   "browser_action": {...},
12   "page_action": {...},
13   "theme": {...},
14   "app": {...},
15   // 根据需要提供
16   "background": {...},
17   "chrome_url_overrides": {...},
18   "content_scripts": [...],
19   "content_security_policy": "policyString",
20   "file_browser_handlers": [...],
21   "homepage_url": "http://path/to/homepage",
22   "incognito": "spanning" or "split",
23   "intents": {...}
24   "key": "publicKey",
25   "minimum_chrome_version": "versionString",
26   "nacl_modules": [...],
27   "offline_enabled": true,
28   "omnibox": { "keyword": "aString" },
29   "options_page": "aFile.html",
30   "permissions": [...],
31   "plugins": [...],
32   "requirements": {...},
33   "update_url": "http://path/to/updateInfo.xml",
34   "web_accessible_resources": [...]
35 }

当然我们的manifest.json文件如下所示:

 1 {
 2     "manifest_version": 2,
 3     "name": "我的时钟",
 4     "version": "1.0",
 5     "description": "我的第一个Chrome扩展",
 6     "icons": {
 7         "16": "images/icon16.png",
 8         "48": "images/icon48.png",
 9         "128": "images/icon128.png"
10     },
11     "browser_action": {
12         "default_icon": {
13             "19": "images/icon19.png",
14             "38": "images/icon38.png"
15         },
16         "default_title": "我的时钟",
17         "default_popup": "popup.html"
18     }
19 }

可以看到,图片分为几种不同的,是因为更好的适应浏览器,图标文件都放在images文件夹下即可。 name 定义了扩展的名称, version 定义了扩展的版本, description 定义了扩展的描述, icons 定义了扩展相关图标文件的位置。 version 的值最多可以是由三个圆点分为四段的版本号,每段只能是数字,每段数字不能大于65535且不能以0开头(可以是0,但不可以是0123),版本号段左侧为高位,比如1.0.2.0版本比1.0.0.1版本更高。每次更新扩展时,新的版本号必须比之前的版本号高。

browser_action 指定扩展的图标放在Chrome的工具栏中, browser_action 中的 default_icon 属性定义了相应图标文件的位置, default_title 定义了当用户鼠标悬停于扩展图标上所显示的文字, default_popup 则定义了当用户单击扩展图标时所显示页面的文件位置。

其中点击后会读取manifest.json文件后,然后调用popup.html文件,接下来就是实现html文件,这个也比较简单,仅仅是弹出一个窗口,然后显示时间,代码如下:

 1 <html>
 2 <head>
 3 <style>
 4 * {
 5     margin: 0;
 6     padding: 0;
 7 }
 8 
 9 body {
10     width: 200px;
11     height: 100px;
12 }
13 
14 div {
15     line-height: 100px;
16     font-size: 42px;
17     text-align: center;
18 }
19 </style>
20 </head>
21 <body>
22 <div id="clock_div"></div>
23 <script src="js/clock.js"></script>
24 </body>
25 </html>

其中就一个div用来显示窗口,而js获取时间之后每一秒钟刷新一次,再次进行显示,时间也就会被更新,具体代码如下:

 1 function my_clock(el){
 2     var today=new Date();
 3     var h=today.getHours();
 4     var m=today.getMinutes();
 5     var s=today.getSeconds();
 6     m=m>=10?m:('0'+m);
 7     s=s>=10?s:('0'+s);
 8     el.innerHTML = h+":"+m+":"+s;
 9     setTimeout(function(){my_clock(el)}, 1000);
10 }
11 
12 var clock_div = document.getElementById('clock_div');
13 my_clock(clock_div);

效果

至此,一个Chrome扩展应用就完成了,下面就是将扩展打包,然后使用了,点击依次点击“菜单”-“更多工具”-“扩展程序”打开扩展程序页面(也可以直接在地址栏中输入chrome://extensions进入),如下所示:

勾选右上角的“开发者模式”,然后点击打包扩展程序,选择刚刚的clock文件夹(PS:第一次不用选择秘钥文件),然后进行打包,打包之后你会获得两个文件,一个是*.crx,一个是*.pem文件,其中第一个文件就是谷歌的扩展应用文件,只需要拖拽到扩展程序即可安装使用,效果如下:

当然,你同样可以点击“加载正在开发的扩展程序”,选择扩展所在的文件夹,就可以在浏览器工具栏中看到我们的扩展了。

源码在: https://github.com/Voidly/chrome-extensions/tree/master/clock

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值