JavaScript学习心得(七)
一 创建事件监听器
开发人员往往使用事件和元素组合来命名事件处理函数。
创建事件监听器方法:
- 嵌入式事件处理器即将JavaScript函数赋值给HTML元素属性(不推荐使用:污染HTML;无法应用渐进增强的概念)
- 传统事件处理:好处有二(容易使用和传统方法创建事件处理器可以使用匿名函数
window.onload = function(){
}),可以通过传统方法将对象的相应事件属性赋值为null,删除事件处理器,同样可以检查对象的属性来确认事件监听器的存在
if(typeof window.onload =='function'){};坏处也有二(只能指定一个事件处理器容易覆盖现有的事件处理器),可以通过创建一个调用两个所需函数的事件处理函数来缓解
- W3C事件处理,DOM Level2规范(嵌入和传统事件处理统称为DOM Level 0)之一,事件监听器用addEventListener()方法创建
window.addEventListener('load'(事件类型的名称,不是window自带的属性onload),init(调用的函数,不带括号),false(事件阶段的布尔值));可以多次使用添加多个事件监听器,对应的是删除一个事件监听器removeEventListener(),必须提供与准备撤销的addEventListener()调用相同的参数。,当事件监听器不需要的时候建议删除。
- IE浏览器事件处理,用attachEvent()和detach()代替addEventListener()和removeEventListener(),只有两个参数:事件和事件发生时调用的函数
window.attachEvent('onload',init);
二 事件类型
1.输入设备事件
输入设备事件:光标驱动事件(不包括键盘)由鼠标、触控板、轨迹球、绘图板及类似设备触发。
1.1 输入按钮事件
click(单击)事件:
- mousedown(鼠标按下)
- mouseup(鼠标释放)
- click(单击)
在一个元素上单击并移动到另一个位置的操作叫做Drag(拖动)。
双击(dbclick)事件,如果在同一元素上使用dbclick,就不要使用click。
1.2输入移动事件
移动光标可能触发的事件:
- mouseout(鼠标移出)
- mouseover(鼠标移过)
- mousemove(鼠标移动):少用,降低网页性能
1.3键盘事件
- keydown(按下键)
- keyup(释放键)
- keypress(按键)
1.4浏览器事件
load:元素加载时触发
- unload:页面卸载时触发,常用于创建弹出式窗口的一种方法,但不能阻止用户关闭窗口
- resize:用户改变窗口大小时触发
- scroll:在浏览器窗口中滚动
- copy
- paste
- cut
1.5表单事件
- reset(无必要,当你使用重置按钮时,可以监视reset事件避免无意重置表单)
- change
- select:文本输入域和文本区域中的文本被选中时触发
- focus
- blur
三 高级事件处理
检查按键
键和字符的区别:键是指键盘上的物理按键,大部分键可以产生超过一个字符,关键至于Unicode。KeyCode和which属性获得字符的Unicode值,但IE不支持which,可以通过以下方法获得字符:
var charCode = e.which || e.keyCode;
//或者
var charCode = ( typeof e.which ==='number') ? e.which: e.keyCode;
使用String对象的fromCharCode()方法获得与字符代码相关的实际字符:
String.fromCharCode(charCode);
对于一些特定的情况(游戏或者其他图形界面),字符不重要,关键在于特定的光标键。
三个特殊键:shiftKey、ctrlkey、altKey。每个键的取值代表该键是否按下的布尔值。
阻止默认事件行为
阻止默认事件行为的方法——从事件处理器中返回false。
JavaScript学习心得(七)的更多相关文章
- arcgis api for javascript 学习(七) 调用发布地图信息,并将地图属性信息输出到Excel表格---进阶版
我们在arcgis api for javascript 学习(三)已经学习到了关于调用地图信息进行属性输出的问题,不过通过代码我们实现后会发现还是有一些小瑕疵的,比如我们只能单个数据属性的输出,如果 ...
- WGZX:javaScript 学习心得--2
转贴javascript心得(二) 标签: javascriptajaxweb开发htmlfirefox框架 2008-09-11 10:56 636人阅读 评论(0) 收藏 举报 分类: UI(2 ...
- WGZX:javaScript 学习心得--1
标签: javascriptiframedreamweaver浏览器htmltable 2008-09-11 10:50 1071人阅读 评论(0) 收藏 举报 分类: UI(21) 1,docu ...
- JavaScript学习心得
javaScript十分的强大,所以自然而然学起来也是不易的,想要掌握它的核心,把它理解透更是不易的,但只要你能够静下心来,耐心的去钻研,学习,还是可以把它给学好的,加油吧! 下面是一些JavaScr ...
- JavaScript学习总结(七)——ECMAScript6(ES6)
一.ECMAScript概要 ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通 ...
- JavaScript学习心得(十)
Ajax Ajax是浏览器中使用JavaScript进行服务器后台请求,读取附加信息或者导致服务器响应的过程. Ajax广泛用于从服务器读取数据,并用所得到的数据更新页面,以及向服务器发送数据 Aja ...
- JavaScript学习心得(八)
Cookie是Netscape发明的技术,是动态网站必不可少的部分,用于浏览器请求Web页面的超文本传输协议是一种无状态的协议. 两种方法维护状态:使用会话(session)(使用服务器技术实现,数据 ...
- JavaScript学习心得(六)
函数 对函数参数没有任何类型检查(弱类型),在必要时在函数内加上类型检查(typeof): JavaScript的函数参数无法设置默认值(可以通过检查参数,当为undefined时设置一个值 func ...
- JavaScript学习心得(五)
一时间 1970年1月1日是电脑常用的时间参考点,称为纪元(Epoch)或者UNIX时间戳(UNIX Epoch).JavaScript中的Date对象能够表示1970年1月1日子夜前后1亿天之内的任 ...
随机推荐
- 问题-安装XP时,提示不识别SATA硬盘
问题现象:笔记本装XP时,系统提示硬盘不能被识别? 问题描述:我原来是vista版本的,硬盘是SATA接口,但我觉得用vista不习惯,所以想装XP,可后来发现机器无法识别硬盘,该怎么解决? 问题原因 ...
- 普通Windows控制台窗口运行nmake编译VC
我的GDAL编译都是在VS2012提供的prompt windows里面运行nmake完成的.但是如果想将编译自动化,放到Jenkins里面怎么办呢?首先没有VS2012的工程,也不想费力去生成一个, ...
- jni编译non-numeric second argument to `wordlist' function错误
在jni编译过程中,遇到non-numeric second argument to `wordlist' function错误,个人遇到这个错误的原因,是因为从windows中拷贝了Android. ...
- office文件在线预览,模仿网易邮箱在线预览的
最近研究了半天,代码是倾情奉送啊,C#,asp.net的 这个原理是office文件转换为PDF文件,然后再转换成SWF文件,FlexPaper+swfTools. 有个问题,需要在web.confi ...
- MongoDB 复制集 (三) 内部数据同步
一 数据同步 一个健康的secondary在运行时,会选择一个离自己最近的,数据比自己新的节点进行数据同步.选定节点后,它会从这个节点拉取oplog同步日志,具体流程是这样的: ...
- c#常用工具类:文件和二进制转换
//================二进制相关转换类============== #region 将文件转换为二进制数组 /// <summary> /// 将文件转换为二进制数组 /// ...
- JS家的排序算法
由于浏览器的原生支持(无需安装任何插件),用JS来学习数据结构和算法也许比c更加便捷些.因为只需一个浏览器就能啪啪啪的调试了.比如下图我学习归并排序算法时,只看代码感觉怎么都理解不了,但是结合chro ...
- 在iis中mantisbt配置过程
最近需要安装个mantisbt,由于不想再安装个apache服务器,因此直接使用iis作为php解析服务器.同时为了方便管理安装包,将php安装包和扩展包能够独立存放在D:\Program Files ...
- Linux安装Jdk,CentOS安装Jdk
Linux安装Jdk,CentOS安装Jdk >>>>>>>>>>>>>>>>>>>& ...
- td中使用overflow:hidden; 无效解决方案
td中使用overflow:hidden; 无效解决方案 >>>>>>>>>>>>>>>>>> ...