JavaScript高级程序设计44.pdf
unload事件
与load事件对应的是unload事件,这个事件在文档被完全卸载后触发,只要用户从一个页面切换到另一个页面,就会发生unload事件,最多的情况是清除引用,避免内存泄漏
与load事件类似,也有两种指定onunload事件的处理程序方式
EventUtil.addHandler(window,"unload",function(event){
alert("Unloaded");
});
为元素添加特性
<body onunload="alert('Unloaded!')">
根据“DOM2级事件”,应该<body>元素而非window对象上面触发unload事件,不过所有浏览器都在window上实现了unload事件,以确保向后兼容
resize事件
当浏览器窗口被调整宽度或者高度时,就会触发resize事件,同样2种方式
EventUtil.addHandler(window,"resize",function(event){
alert("Resized");
});
IE、Safari、Chrome和Opera会在浏览器变化1像素时就触发resize事件,然后随变化不断触发,Firefox则是在停止变化后触发事件,所以要避免大量的计算
浏览器最大化最小化也会触发resize事件
scroll事件
scroll事件在window对象上发生,实际表示的是页面中相应元素的变化,在混杂模式下可以通过<body>元素的scrollLeft和scrollTop来监控这一变化;而在标准模式下,除Safari之外的所有浏览器都会通过<html>元素反映这一变化
EventUtil.addHandler(window,"scroll",function(event){
if(document.compatMode=="CSS1Compat"){
alert(document.documentElement.scrollTop);
}else{
alert(document.body.scrollTop);
}
});
这个事件同样应避免大量计算
焦点事件
焦点事件会在页面获得或失去焦点时触发,有以下6个焦点事件
blur:在元素失去焦点时触发,这个事件不会冒泡,所有浏览器都支持它
focus:在元素获得焦点时触发,这个事件不会冒泡,所有浏览器都支持它
DOMFocusIn:在元素获得焦点时触发,DOM3级事件已废弃,只有Opera支持这个事件
DOMFocusOut:在元素失去焦点时触发,DOM3级事件已废弃,只有Opera支持这个事件
focusin:在元素获得焦点时触发,这个事件与HTML事件focus等价,但它冒泡,IE5.5+、Safari5.1+、Opera11.5+和Chrome支持
focusout:在元素失去焦点时触发,这个事件与HTML事件blur等价,但它冒泡,IE5.5+、Safari5.1+、Opera11.5+和Chrome支持
blur和focus不冒泡是最大的问题,IE的方式被DOM3级事件采纳为标准方式
当焦点从页面中的一个元素移动到另一个元素,会依次触发下列事件:
focusout→focusin→blur→DOMFocusOut→focus→DOMFocusIn
鼠标与滚轮事件
鼠标事件是Web开发中最常用的一类事件,DOM3级事件中定义了9个鼠标事件
click:鼠标单击左键或键盘回车键
dblclick:鼠标双击左键DOM3级将其纳入了规范,
mousedown:按下任意鼠标按钮时触发,不支持键盘触发
mouseenter:鼠标光标从元素外部首次移动到元素范围内时触发,该事件不冒泡。DOM3级将其纳入了规范,IE、Firefox9+和Opera支持这个事件
mouseleave:鼠标光标从元素上方移动到元素范围外时触发,该事件不冒泡。DOM3级将其纳入了规范,IE、Firefox9+和Opera支持这个事件
mousemove:鼠标指针在元素内部移动时重复地触发,不支持键盘触发
mouseout:鼠标指针位于元素上方,用户将其移入另一个元素时触发,另一个元素可能位于前一个元素的外部也可能是这个元素的子元素,不支持键盘触发
mouseover:鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发,不支持键盘触发
mouseup:释放鼠标按钮时触发,不支持键盘触发
上面的事件除了mouseleave和mouseenter,其余都会冒泡,也可以被取消,取消鼠标事件将会影响浏览器的默认行为
事件与事件之间的联系非常紧密
mousedown→mouseup→click→mousedown→mouseup→click→dblclick
IE8及之前版本有个BUG,IE9修复了该BUG
mousedown→mouseup→click→mouseup→dblclick
检测浏览器是否支持DOM2级事件(除dblclick、mouseenter和mouseleave之外)
var isSupported=document.implementation.hasFeature("MouseEvents","2.0");
检测浏览器是否支持以上所有事件
var isSupported=document.implementation.hasFeature("MouseEvent","3.0");
注意:DOM3级事件的feature名是"MouseEvent",而非"MouseEvents"
鼠标还有一类滚轮事件,mousewheel事件,用于跟踪鼠标滚轮
JavaScript高级程序设计44.pdf的更多相关文章
- JavaScript高级程序设计61.pdf
JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...
- JavaScript高级程序设计60.pdf
错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...
- JavaScript高级程序设计58.pdf
15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...
- JavaScript高级程序设计57.pdf
表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...
- JavaScript高级程序设计55.pdf
输入模式 HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值 例如,只想在允许在文本字段中输入数值 <input type="text&q ...
- JavaScript高级程序设计54.pdf
过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...
- JavaScript高级程序设计53.pdf
共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...
- JavaScript高级程序设计52.pdf
表单脚本 表单的基础知识 在HTML中,表单是由<form>元素表示的,在Javascript对应的是HTMLFormElement类型,它继承自HTMLElement,因此具有与其他HT ...
- JavaScript高级程序设计50.pdf
hashchange事件 HTML5新增了hashchange事件,以便在URL的参数列表(及URL中“#”号后面的所有字符串)发生变化时通知开发人员,之所以新增这个事件,是因为在Ajax应用中,开发 ...
随机推荐
- HA高可用配置
HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务. 下 ...
- Java中静态代码块,代码块,构造方法的理解
直接贴代码 class A { static { System.out.println("父类静态代码区"); } { System.out.println("父类代码区 ...
- top工具
top 显示进程所占系统资源 能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top命令打印出了很多信息,包括系统负载(loadaverage).进程数(Tasks).c ...
- vs2005用正则表达式统计有效代码行数
正则表达式:^:b*[^:b#/]+.*$ 需要注意:#开头和/开头或者空行都不计入代码量. 如果需要只统计代码文件的代码量,可以按住Ctrl+Shift+F之后选择查找文件的类型. Form:htt ...
- C语言中字符型和字符串型的区别?
C语言中只有字符型类型,没有字符串型类型.字符类型用一个带符号的8位二进制编码表示,其性质与int相同,只是只有一个字节.表示字符的ASCII编码使用其中的0~127,所以要明白字符类型(char)其 ...
- NSString NSMutableString copy mutableCopy retain weak strong整合
copy retain assign的差别在于对象属性的set方法 NSString 与 NSMutableString NSString是不可变字符串对象,这句话的意思,结合代码: #import ...
- asp.net mvc将html编译
从数据库查询出来的值,如果包含html标签并且通过MVC绑定页面的话,那么他会通过浏览器编译为字符串显示,所以我们有得在从新的转一次: HtmlString hh = new HtmlString(M ...
- 【转】成为Java顶尖程序员 ,看这11本书就够了
成为Java顶尖程序员 ,看这11本书就够了 转自:http://developer.51cto.com/art/201512/503095.htm 以下是我推荐给Java开发者们的一些值得一看的好书 ...
- gulp 中的增量编译
最近花一点时间学了下 gulp,顺便学了下 sass,因为工作中并不需要用(我比较希望学习是需求驱动),所以一直拖到现在才学.突然觉得学习这类工具性价比很高,半天一天即可上手,技能树丰富了(尽管可能只 ...
- 数据采集服务提供商,ip提供商 里面有些不错的基础数据
http://user.qzone.qq.com/1649677458 这家公司的爬虫应该挺牛的 !@#!#!~#¥¥¥@@http://www.site-digger.com/