事件

本文详细介绍了DOM0级事件和DOM2级事件的区别,包括执行次数、事件传播方式及不兼容事件。同时,讲解了事件冒泡与捕获的概念,并提供了阻止冒泡和捕获的兼容性写法。此外,还涉及事件委托、键盘事件、鼠标事件及触屏事件的相关知识,以及如何检测设备是否为移动端和元素间的碰撞检测。
摘要由CSDN通过智能技术生成

DOM0级事件和DOM2级事件的区别:
1、DOM0同一事件只能执行一次,DOM2同一事件可以绑定多次
2、DOM0基本都是冒泡,DOM2可以指定捕获或冒泡
3、不是所有事件DOM0都支持,例:FF的滚轮事件只能使用DOM2

冒泡与捕获:
冒泡:同一事件由子级向父级逐层传递称之为冒泡(先实现子级的方法)
捕获:同一事件由父级向子级逐层传递称之为捕获(先实现父级的方法)

阻止冒泡的兼容写法

var e = e || window.event;
if(e.stopPropagation){
	// 非IE浏览器阻止冒泡写法
	e.stopPropagation();
}else{
	// IE浏览器阻止冒泡写法
	e.cancelBubble = true;
}

阻止捕获的兼容写法

var e = e || window.event;
if(e.preventDefault){
	// 非IE浏览器阻止捕获写法
	e.preventDefault();
}else{
	// IE浏览器阻止捕获写法
	e.returnValue = true;
}

委托事件
自己的事件交由父级实现,通过事件对象的target属性获取对应子级标签

键盘事件
keydown当用户按下键盘上的任意键时触发,按住不动将重复触发
keyup(event.keyCode键码)当用户释放键盘上的键时触发
keypress当用户按下键盘上的字符键时触发,按住不动将重复触发(不能检测到所有按键,有局限性)

鼠标事件
坐标位置:screenX、screenY在屏幕中的X、Y坐标
clientX、clieintY表示事件发生时鼠标指针在视口中的水平坐标和垂直坐标 (不包括滚动距离)
offsetX、sffsetY获取点击目标的坐标(有兼容性)
pageX、pageY在页面中的x、y坐标(保活滚动距离,IE不支持这两个属性)

触屏事件(移动端)
touchstart不止会产生一个触摸点所以会产生一个touches数组
解除默认preventDefault()
touchstart:当手纸触摸屏幕时触发
touchmove:当手指在屏幕上滑动时连续触发
touchend:当手指从屏幕上移开时触发

判断设备是否是移动端

function isPhone(){
	var is = false;
	var arr = ['iOS','iPhone','Android','iPad','iPod']
	for(var i = 0; i < arr.lenght; i++){
		if(navigator.userAgent.includes(arr[i])){
			is = true;
			break;
		}
	}
	return is;
}

检测是否碰撞

function isCash(a, b){
	var l1 = a.offsetLeft;
	var t1 = a.offsetTop;
	var r1 = l1 + a.offsetWidth;
	var b1 = t1 + a.offsetHeight;

	var l2 = b.offsetLeft;
	var t2 = b.offsetTop;
	var r2 = l2 + b.offsetWidth;
	var b2 = t2 + b.offsetHright;
	
	if(r2 < l1 || b2 < t1 || r1 < l1 || b1 < t2){
		return false;
	}else{
		return true;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值