《javascript权威指南》这本书就像是js界的圣经,对于大神和新手都应该是必读书。但是这本近千页的书已经厚到让人望而生畏,要通读它不仅要时间也需要毅力。为了提升自己在js语言上的深度,所以抱着工匠精神开始研读,此文包含书中实用性较强的一些知识点和代码,算做读书笔记吧~
这一章参照的是W3C定义的3级DOM事件,现在更名为UI事件了。
文档加载事件
知识点
- load。直到文档和所有图片加载完毕时才发生
- DOMContentLoaded。当文档加载解析完毕且所有延迟脚本都执行完毕时会出发。优先使用
- readystatechange。HTML5标准化的事件,在load事件之前触发。
例题
定义whenReady函数,类似onLoad函数。当文档就绪时,传递给whenReady的函数就会作为Document对象的方法调用。优先使用DOMContentLoaded和readystatechange事件。
代码
|
|
鼠标事件
知识点
事件属性
- clientX和clientY表示鼠标坐标
- altKey、metaKey、ctrlKey、shiftKey
- HTML5中元素添加draggable属性之后就可以实现dragstart和dragend事件。
例题
定义drag函数实现文档元素拖动操作。
代码
drag函数绑定到mousedown事件,整个逻辑也是比较简单在mousedown事件开始时记录坐标点,然后在mousemove事件时改变css样式来实现dom元素移动,同时结束时注销事件。不过需要注意的就是dom元素必须是非静态定位。
文本/键盘事件
知识点
- keypress。常用的高级键盘事件。
- textinput。时3级DOM事件规范定义的通用事件(来源包括键盘/粘贴/拖放/声音/手写)
- textInput。webkit浏览器支持类似textinput的事件。
例题1
写一个过滤键盘输入的函数,当用户输入了不允许字符时显示消息元素,否则隐藏它。
代码1
|
|
例题2
将输入的字符自动转换为大写
代码2
|
|
事件处理
事件代理
节省内存,适用于表格/列表等重复性dom元素。基本原理就是将事件绑定到祖先元素上,然后判断事件对象target,如果为对应的子元素则执行对应的逻辑。
事件创建/分发
|
|
总结
这本书真是内容翔实,枯燥难读。这一章的内容看了几遍才决定以百度脑图和代码实例相结合的方式算是比较合理吧~
百度脑图下载地址:http://yalishizhude.github.io/subscribe/
一部由众多技术专家推荐, 帮你成为具有全面能力和全局视野工程师的进阶利器—— 《了不起的JavaScript工程师》出版了! 点击下方链接即刻踏上进阶之路!
- 淘宝:https://detail.tmall.com/item.htm?id=600756390664
- 京东:https://item.jd.com/12562349.html?dist=jd
- 当当:http://product.dangdang.com/27922044.html