翻译总结了这么多的官网内容,下面以一款博主开发的“沪深股票价格变化实时追踪提醒”软件为例,介绍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浏览器扩展开发系列之十九:扩展开发示例的更多相关文章

  1. BizTalk 开发系列(三十九) BizTalk Server 2009技术概览

    BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...

  2. BizTalk开发系列(二十九) 宏的使用

    在BizTalk中可以使用宏集合动态的让BizTalk发送处理程序使用单独的值来替换宏.常用的使用宏的发送程序有:文件发送适配器和SMTP发送适 配器.在表达式中可以使用同时使用多个宏.例如:在文件发 ...

  3. Android开发系列(十九个):至SimpleAdapter设置样式

    Adapter任务:在数据adapter处理后做.展会上的观点 对于一般ArrayAdapter供.传递给ArrayAdapter之后就能够在视图上用一个列表显示出这个字符串数组. 比例如以下边的代码 ...

  4. Chrome浏览器扩展开发系列之十四

    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59      阅读:1361      评论:0      收藏:0    ...

  5. Chrome浏览器扩展开发系列之十四:本地消息机制Native messagin

    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 2016-11-24 09:36 114人阅读 评论(0) 收藏 举报  分类: PPAPI(27)  通过将浏览器 ...

  6. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  7. webpack4 系列教程(十五):开发模式与webpack-dev-server

    作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十五):开发模式与 webpack-dev-server>原文地址.更欢迎来我的 ...

  8. Android进阶(十九)AndroidAPP开发问题汇总(三)

    Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两 ...

  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理

    这是<微信开发深度解析:微信公众号.小程序高效开发秘籍>出版之后写的第一篇微信相关的文章.从这一篇开始,将介绍第一版出版之后添加或修改的功能,或者对书上内容需要做的补充. MP v14.8 ...

随机推荐

  1. (HTTPS)web 项目如何实现https

    HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解密,因此,所传送的数据不容易被网络黑客截获和破解.本文介绍HTTPS的三种实现方法.方法一 静态超链 ...

  2. RGB565的理解

    一个彩色图像由R G B三个分量组成,一个RGB565的每一个像素点数据为2Byte,即16位,那么从名字上就可看出来这16位中,高5位为R分量,中间6位为G分量,低5位为B分量. 下面做了一个实验, ...

  3. springcloud(七):配置中心svn示例和refresh

    上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...

  4. 《算法4》2.1 - 插入排序算法(Insertion Sort), Python实现

    排序算法列表电梯: 选择排序算法:详见 Selection Sort 插入排序算法(Insertion Sort):非常适用于小数组和部分排序好的数组,是应用比较多的算法.详见本文 插入排序算法的语言 ...

  5. Spring学习笔记——02 Bean的命名及实例化

    一.Bean的命名 前一篇讲到IoC是一个管理Bean的容器,Bean多数情况下都是通过XML文件进行配置的,其中Bean的命名有以下几种方式,现在梳理一下. 1. 不指定id,只配置类名 <b ...

  6. 正则表达式入门案例C#

    ---恢复内容开始--- 在网上百度了好多关于正则表达式的,不过好多都是关于语法的,没有一个具体的案例,有点让人难以入门,毕竟我还是喜欢由具体到抽象的认识.所以我就在这先提供了一个入门小案例(学了了6 ...

  7. SQLalchemy模块用法

    安装 pip install sqlalchemy #!/usr/bin/env python # -*- coding:utf-8 -*- # 加载模块 from sqlalchemy.ext.de ...

  8. springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法

    业务场景: A.B两个单位,系统部署同一套代码: A.B两系统能相互访问: 要求将数据从A系统同步到B系统,再将反馈信息回发给A: 实际开发情况: 因为系统比较小,最开始设计架构的时候没有考虑到消息互 ...

  9. C++实现密码强度测试

    最近在博客中看到许多用js写的密码强度检测,我觉得挺有意思的,所以呢我打算自己也写个来玩玩,最可悲的是我还没学js,当然这不重要,所以呢打算用C++来写一个密码强度检测,这里我来给大家说说用JS写的和 ...

  10. 流畅的python学习笔记:第二章

    第二章开始介绍了列表这种数据结构,这个在python是经常用到的结构 列表的推导,将一个字符串编程一个列表,有下面的2种方法.其中第二种方法更简洁.可读性也比第一种要好 str='abc' strin ...