Chrome浏览器扩展开发系列之十九:扩展开发示例
翻译总结了这么多的官网内容,下面以一款博主开发的“沪深股票价格变化实时追踪提醒”软件为例,介绍Chrome浏览器扩展程序的开发,开发环境为Eclipse IDE+Chrome Browser。
“沪深股票价格变化实时追踪提醒”软件能够实时获取用户指定的股票的价格等参数,并根据用户设置的价格区间进行越界提醒。该软件目前只实现了两部分,一个是options页面,用以配置用户要监听的股票及股票的价格区间。另一个是browser action类型的popup页面,供用户查看股票当前价格,并通过图标的Badge实现价格越界提醒。
首先在Eclipse中创建JavaScript项目。
在JavaScript项目所在的目录下分别创建_locales、css、html、img和js子目录,并创建manifest.json文件。
在_locales目录下创建zh_CN子目录,在zh_CN子目录下创建messages.json文件,支持中文的国际化。
将必要的CSS文件复制到css目录下。
将必要的PNG文件复制到img目录下。
在html目录下创建options.html和popup.html文件。HTML页面非常简单,只给出了HTML基本元素结构,引入了必要的CSS和JS。页面的具体内容都是由JS根据读取的数据动态生成的。
在js目录下创建如下JS文件:
- constants.js定义全局常量
- background.js定义数据操作逻辑,包括启动时的初始化和运行时的读写逻辑
- storage.js定义数据存储逻辑,通过chrome.storage.sync API实现持久化数据的真正读写
- options.js定义options.html页面的内容
- popup.js定义popup.html页面的内容
- utils.js定义通用的JS函数
- jquery-min.js第三方jQuery类库
manifest.json文件内容:
{
"manifest_version": 2,
"name": "__MSG_extension_name__",
"description": "__MSG_extension_description__",
"version": "1.0",
"default_locale": "zh_CN",
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"background": {
"scripts": ["js/shanghaiA.js", "js/shanghaiB.js", "js/shenzhenA.js", "js/shenzhenB.js", "js/shenzhenC.js", "js/shenzhenJ.js", "js/constants.js", "js/utils.js", "js/background.js", "js/storage.js"],
"persistent": true
},
"permissions": [
"notifications",
"storage",
"<all_urls>"//由于要通过Web Services调用获取股票的实时信息,此处必须有此项
],
"options_page": "html/options.html",
"options_ui": {
"page": "html/options.html",
"chrome_style": true,
"open_in_tab": false
},
"browser_action": {
"default_icon": {
"38": "img/vos128.png",
"19": "img/vos48.png"
},
"default_title": "__MSG_extension_browser_action_default_title__",
"default_popup": "html/popup.html"
}
}
数据结构:
//object name saved in chrome storage
var VOG_LOG = "VOSTOCK";
//object data saved in chrome storage
var VOG_LOG_DATA = {
dataVersion: 3, //当前版本
products: [], //用户监听的股票,用户可以通过options页面配置,其中包括股票的基本信息和用户的期望范围
interval: 5, //股票信息更新时间间隔,默认5秒
notification: false //是否开通Notification通知,默认不开通
};
options页面示例:

popup页面示例:

上图中,提示股票价格达到了期望上限。
关于Chrome浏览器扩展的介绍就此告一段落,谢谢大家的关注。
下面将陆续结合笔者目前的实际工作,陆续发布与Chrome浏览器Native Client相关的开发文档,希望能够继续得到大家的关注。
Chrome浏览器扩展开发系列之十九:扩展开发示例的更多相关文章
- BizTalk 开发系列(三十九) BizTalk Server 2009技术概览
BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...
- BizTalk开发系列(二十九) 宏的使用
在BizTalk中可以使用宏集合动态的让BizTalk发送处理程序使用单独的值来替换宏.常用的使用宏的发送程序有:文件发送适配器和SMTP发送适 配器.在表达式中可以使用同时使用多个宏.例如:在文件发 ...
- Android开发系列(十九个):至SimpleAdapter设置样式
Adapter任务:在数据adapter处理后做.展会上的观点 对于一般ArrayAdapter供.传递给ArrayAdapter之后就能够在视图上用一个列表显示出这个字符串数组. 比例如以下边的代码 ...
- Chrome浏览器扩展开发系列之十四
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59 阅读:1361 评论:0 收藏:0 ...
- Chrome浏览器扩展开发系列之十四:本地消息机制Native messagin
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 2016-11-24 09:36 114人阅读 评论(0) 收藏 举报 分类: PPAPI(27) 通过将浏览器 ...
- Web 开发人员和设计师必读文章推荐【系列二十九】
<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- webpack4 系列教程(十五):开发模式与webpack-dev-server
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十五):开发模式与 webpack-dev-server>原文地址.更欢迎来我的 ...
- Android进阶(十九)AndroidAPP开发问题汇总(三)
Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理
这是<微信开发深度解析:微信公众号.小程序高效开发秘籍>出版之后写的第一篇微信相关的文章.从这一篇开始,将介绍第一版出版之后添加或修改的功能,或者对书上内容需要做的补充. MP v14.8 ...
随机推荐
- 开涛spring3(12.2) - 零配置 之 12.2 注解实现Bean依赖注入
12.2 注解实现Bean依赖注入 12.2.1 概述 注解实现Bean配置主要用来进行如依赖注入.生命周期回调方法定义等,不能消除XML文件中的Bean元数据定义,且基于XML配置中的依赖注入的 ...
- 1.搭建Maven 多模块应用 --Intellij IDEA 2016.3.5
1.打开IDEA,file->new ->project 新建工程 2.建成的项目如下图,然后新建java class 模块: 右击工程名->new -> Module 3. ...
- XInput和DirectInput
原文链接:https://msdn.microsoft.com/en-us/library/windows/desktop/ee417014(v=vs.85).aspx XInput是一个允许应用从W ...
- (数字IC)低功耗设计入门(七)——门级电路低功耗设计优化(续)
前面讲解了门级功耗的优化方法,包括静动态和总体的功耗.现在来记录一下门级层次(有点书也说是在系统级)常用的一种低功耗方法--电源门控. ①电源门控概述与原理 电源门控是指芯片中某个区域的供电电源被关掉 ...
- Rxjava observeOn()和subscribeOn()初探
Rxjava这么强大的类库怎么可能没有多线程切换呢? 其中observeOn()与subscribeOn()就是实现这样的作用的.本文主要讲解observeOn()与subscribeOn()的用法, ...
- vue-router路由参数刷新消失的问题
场景:vue-router实现的单页应用,登录页调用登录接口后,服务器返回用户信息,然后通过router.push({name: 'index', params: res.data})传给主页组件,并 ...
- TestNG+ExtentReports生成超漂亮的测试报告
一个优雅.漂亮的测试报告,能够给我们的测试工作带来不少的加分,而报告的模版实在是让我们这些技术人员头疼的问题,设计的实在是没有什么美感. 那么今天就给大家分享一个自动化测试中,一个超漂亮的测试报告模版 ...
- android studio IDE 下,设置ACTIVITY全屏
因为ANDROID STUDIO的JAVA类是继承AppCompatActivity的 ,所以常规的全屏设置并不管用.如果要设置全屏,请参照如下代码/ 1/首先,打开AndroidManifest.x ...
- [1] Report Fusioncharts
图形报表之fusioncharts
- 关于tween.js 封装的方法
今天做的是匀速情况下div的运动.首先开始之前先了解运动的原理 A------------>>BA移动到B 这段距离是总距离 用一个变量保存下来:var dA移动到B 移动的总次数 用一 ...