手把手教你开发Chrome扩展二:为html添加行为
来源:互联网 发布:向量的斜对称矩阵 编辑:程序博客网 时间:2024/04/28 05:02
上一节我们已经讲了Chrome扩展的基础知识,并构建了基础的html,这一节我们将就html DOM添加部分添加脚本,即脚本在我们的popup页面中进行的操作,页面所产生的变化。
正常情况下数据处理加载完成状态,这些数据是从本地数据读取的。
点击“添加新项”,出现输入框,输入文字后回车提交数据:
添加完成后将数据存储,同时添加DOM元素:
考虑到功能最简化处理,点击已标为完成的任务,将提示“删除或重置为未完成”:
以上功能为最核心功能,可以在此基础上进行扩展,比如任务分组,修改任务,任务提醒,网络同步数据等等。
下面开始相应的脚本内容。
为了避免全局变量,使用匿名函数方式,所有事件处理及数据绑定均在此函数中进行,同时定义与jQuery中的$()类似的函数:
(function(){
var $=function(id){return document.getElementById(id);}
})();
建立Tasks对象,定义show()函数和hide()函数,同时存储几个常用的DOM对象。
var Tasks = {
show:function(obj){
obj.className='';
return this;
},
hide:function(obj){
obj.className='hide';
return this;
},
//存储dom
$addItemDiv:$('addItemDiv'),
$addItemInput:$('addItemInput'),
$txtTaskTitle:$('txtTaskTitle'),
$taskItemList:$('taskItemList')
}
其中show()函数和hide()函数均使用了链式调用,每次执行此函数均会返回对象本身,这样对象就可以使用形如类似jQuery书写方式来使用此函数。
然后注册事件:
//.....
//初始化
init:function(){
/*注册事件*/
//打开添加文本框
Tasks.$addItemDiv.addEventListener('click',function(){
Tasks.show(Tasks.$addItemInput).hide(Tasks.$addItemDiv);
Tasks.$txtTaskTitle.focus();
},true);
//回车添加
Tasks.$txtTaskTitle.addEventListener('keyup',function(ev){
var ev=ev || window.event;
if(ev.keyCode==13){
//TODO:写入本地数据
Tasks.AppendHtml(task);
Tasks.$txtTaskTitle.value='';
Tasks.hide(Tasks.$addItemInput).show(Tasks.$addItemDiv);
}
ev.preventDefault();
},true);
//取消
Tasks.$txtTaskTitle.addEventListener('blur',function(){
Tasks.$txtTaskTitle.value='';
Tasks.hide(Tasks.$addItemInput).show(Tasks.$addItemDiv);
},true);
//TODO:初始化数据,加载本地数据,生成html
},
//....
其中待完成部分为我们下一节将重点计到的html5的本地存储功能。再定义数据操作部分,先写上空白函数:
//....
//增加
Add:function(){
//TODO
},
//修改
Edit:function(){
//TODO
},
//删除
Del:function(){
//TODO
},
//...
还需要初始化此函数使其执行并让匿名函数执行:
(function(){
var Tasks = {
//***
}
Tasks.init();
})();
好吧,以下就是本节中所要提到的全部代码:
(function(){
var $=function(id){return document.getElementById(id);}
var Tasks = {
show:function(obj){
obj.className='';
return this;
},
hide:function(obj){
obj.className='hide';
return this;
},
//存储dom
$addItemDiv:$('addItemDiv'),
$addItemInput:$('addItemInput'),
$txtTaskTitle:$('txtTaskTitle'),
$taskItemList:$('taskItemList'),
//初始化
init:function(){
/*注册事件*/
//打开添加文本框
Tasks.$addItemDiv.addEventListener('click',function(){
Tasks.show(Tasks.$addItemInput).hide(Tasks.$addItemDiv);
Tasks.$txtTaskTitle.focus();
},true);
//回车添加
Tasks.$txtTaskTitle.addEventListener('keyup',function(ev){
var ev=ev || window.event;
if(ev.keyCode==13){
//TODO:写入本地数据
Tasks.AppendHtml(Tasks.$txtTaskTitle.value);
Tasks.$txtTaskTitle.value='';
Tasks.hide(Tasks.$addItemInput).show(Tasks.$addItemDiv);
}
ev.preventDefault();
},true);
//取消
Tasks.$txtTaskTitle.addEventListener('blur',function(){
Tasks.$txtTaskTitle.value='';
Tasks.hide(Tasks.$addItemInput).show(Tasks.$addItemDiv);
},true);
//TODO:初始化数据,加载本地数据,生成html
},
//增加
Add:function(){
//TODO
},
//修改
Edit:function(){
//TODO
},
//删除
Del:function(){
//TODO
},
AppendHtml:function(title){
var oDiv=document.createElement('div');
oDiv.className='taskItem';
var oLabel=document.createElement('label');
oLabel.className= 'on';
var oSpan=document.createElement('span');
oSpan.className='taskTitle';
var oText=document.createTextNode(title);
oSpan.appendChild(oText);
oDiv.appendChild(oLabel);
oDiv.appendChild(oSpan);
//注册事件
oDiv.addEventListener('click',function(){
//TODO
},true);
Tasks.$taskItemList.appendChild(oDiv);
},
RemoveHtml:function(){
//TODO
}
}
Tasks.init();
})();
0
上一篇:HTML5简单介绍
下一篇:手把手教你开发Chrome扩展三:关于本地存储数据
相关热门文章
- JavaSript模块规范 - AMD规范...
- Modernizr的介绍和使用
- Web调试利器fiddler介绍
- js验证固定电话、手机号码...
- 利用Extjs导出excel文件
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- 手把手教你开发Chrome扩展二:为html添加行为
- 手把手教你开发Chrome扩展二:为html添加行为
- 手把手教你开发Chrome扩展二:为html添加行为
- 手把手教你开发Chrome扩展
- 手把手教你Chrome扩展开发:本地存储篇
- 手把手教你开发chrome
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 爱测未来开发-手把手教你利用C++为Python写扩展
- 手把手教你javamail开发(二)
- 手把手教你在Eclipse中配置开发Struts(二)
- 手把手教你在Eclipse中配置开发Struts(二)
- 手把手教你开发2048!〖二〗
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- Python性能分析指南
- [leetcode] 5-Longest Palindromic Substring
- HTML5设计原理【转】
- HTML5简单介绍
- 手把手教你开发Chrome扩展二:为html添加行为
- 手把手教你开发Chrome扩展三:关于本地存储数据
- Go在谷歌:以软件工程为目的的语言设计
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- ASP.NET Repeater里面a href使用参数
- mysql及其python适配器安装
- Django URL调度详述
- Android通过手机的传感器计算手机的移动加速度
- Django 数据层性能优化
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
微丝
清胃止痛微丸
微丸振动筛
微乐分怎么开通
微乐分有额度6000为什么不能用
微乐吉林棋牌上不去
微乐捉鸡麻将下载
妻乐无穷醉酒微酣
贵阳微乐捉鸡麻将
微乐捉鸡麻将下载安装
微乐分怎么开通步骤
微乐龙江麻将
微乐麻将贵阳捉鸡
微乐分上征信吗
微乐辽宁麻将
微乐分额度
微乐贵阳捉鸡麻将下载
微乐分还信用卡靠谱吗
贵阳微乐捉鸡麻将安装
贵阳微乐捉鸡麻将下载安装
微乐捉鸡
微乐分申请步骤
微乐分有7000额度为什么不能用
贵阳微乐捉鸡
吉林微乐麻将下载安装
微商代理珍嗖啦米乐儿
微乐辽宁棋牌手机版
微乐美瞳网
微乐游
乐享微商
微乐美瞳隐形眼镜网
高汇通微乐付卡
weile
贵阳捉鸡麻将微乐
微乳
美微乳
微乳福利
微乳切削液配方
微云app
微云app下载
qq 微云