event概念及作用
在触发DOM上某个事件时,会产生一个事件对象event,这个对象包含着所有事件相 关的信息,包含导致事件的元素,事件的类型以及其他的与特定事件相关的信息。
它是事件绑定中的一个隐藏的参数,可以通过arguments[0]来获取
也可以叫事件源对象,这里面包含了关于这次事件的相关信息
获取方式(兼容问题)
在W3C标准中,直接在函数中声明该参数即可
btn.onclick = function(event) { //这里就可以使用了 }; |
兼容性写法,支持老版本的IE
var ev = ev ? ev : window.event; var ev = ev || window.event; |
event.button属性介绍
alert(event.button); alert(ev.which); //如果当前event是鼠标事件,则会有一个button属性,它是一个数字 0代表鼠标按下了左键 || 1代表按下了滚轮 || 2代表按下了右键 |
不过老版本的IE并没有遵守W3C的规范,它的button属性含义如下
onmousedown/onmouseup
1鼠标左键 2鼠标右键 3左右同时按 4滚轮 5左键加滚轮 6右键加滚轮 7三个同时 |
目前IE11.0版本,无兼容性问题
鼠标事件中获取鼠标的位置属性介绍(兼容问题)
event.clientX鼠标相对于浏览器窗口可视区域的X坐标(窗口坐标),可视区域不包括工具栏和滚动条。 event.pageX类似于event.clientX,但它们使用的是文档坐标而非窗口坐标。(ie8及以下不支持) event.offsetX鼠标相对于事件源元素(srcElement)的X坐标。 event.screenX鼠标相对于用户显示器屏幕左上角的X,Y坐标。 |
3.扩展案例:表格的即时编辑
键盘事件(keyup、keydown、keypress)
组合键ctrlKey、altKey、shiftKey
if(event.keyCode == 13 && event.ctrlKey) { //发送消息 } |
keyCode/which兼容
event.keyCode || event.which alert(event.which); //IE不支持(ie8) |
事件的冒泡(事件从子节点向上依次传递给父节点)
IE 的事件流叫做事件冒泡(event bubbling) ,即事件开始时由最具体的元素(文档中嵌套 层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档) 。
- 浏览器的默认行为
javascript中的默认行为是指javascript中事件本身具有的属性,如<a>标签可以跳转,文本框 可输入文字、字母、图片路径等,右键浏览器会出现菜单等行为便被称为浏览器的默认行为。
- 阻止默认行为(兼容)
阻止右键菜单
document.oncontextmenu = function(){ alert("右键被按下"); return false; } |
ev.preventDefault(); //非IE ev.returnValue = false; //IE |
- 事件监听器(兼容)---事件绑定
- target.addEventListener("click", fun, false); --标准浏览器
- target.attachEvent("onclick",fun); --IE浏览器(执行顺序按照绑定的反序)
- removeEventListener()/detachEvent() 移除事件绑定的参数和添加事件绑定是一致的。
事件流描述的是从页面中接收事件的顺序。
-
- 可以绑定多个函数在一个对象上。
- 执行顺序按照绑定的顺序来(IE反向)。
- 第三个参数是否使用捕捉(反向冒泡),默认false,为冒泡。
- 事件捕获
- 从父元素向子元素,直至触发事件元素
- 事件的冒泡(事件从子节点向上依次传递给父节点)
json是在JavaScript中读写结构化数据的最好的方式(xml/html);
-
- 它是一种数据格式,不是一种编程语言
- 但 JSON 并不从属于 JavaScript
语法组成:简单值 对象 数组。
-
- JSON与 对象有两个地方不一样
-
- 没有声明变量(JSON 中没有变量的概念)
- 没有末尾的分号(因为这不是 JavaScript 语句,所以不需要分号) ,对象的属性必须加双引号。
- 序列化的方法
- JSON.stringify() :把一个 JavaScript 对象序列化为一个 JSON 字符串
- JSON.parse() 把对应的字符串转换成json格式,注意引号。