09-JS事件
2021-04-25 20:27
标签:跳转 浏览器 ble rem 上传 event 冒泡 鼠标 双击 什么是事件? 什么是事件句柄? 事件的绑定 事件解绑 事件绑定与解绑(IE9以下用) 事件绑定与解绑(兼容性解决函数) var EventUtil = { //事件绑定与解绑(兼容IE9以下) addHandler: function(element, type, handler) { //绑定事件 //调用该函数 var btn = document.getElementById("myBtn"); 事件冒泡与事件捕获 事件委托(利用事件冒泡原理) Event对象属性与方法 event.clientY //计算的是浏览器顶部到鼠标的位置,不计算滚轴距离 event.pageY //计算的是浏览器顶部到鼠标的位置,要计算滚轴距离 event.screenY //计算的是屏幕到鼠标位置的距离 阻止默认行为 阻止事件冒泡或事件捕获 Event对象属性与方法(IE9以下) Event对象属性与方法(兼容性解决函数) var EventUntil = { getTarget: function(event) { //获取事件源对象 preventDefault: function(event) { //阻止默认行为 stopPropagation: function(event) { //阻止事件冒泡或事件捕获 } 事件类型(常用数据类型) UI事件 鼠标事件 表单事件 键盘事件 移动端事件 其他事件 09-JS事件 标签:跳转 浏览器 ble rem 上传 event 冒泡 鼠标 双击 原文地址:https://www.cnblogs.com/mingliangge/p/12207685.html
事件可以被JavaScript侦测到的行为,通俗地讲就是当用户与web页面进行某些交互时,解析器就会创建响应的event对象以描述事件信息。 //比如鼠标事件等。
事件句柄(又称数据处理函数、事件监听函数),指用于响应某个事件而调用的函数。每一个事件均对应一个事件句柄,在程序执行时,将相应的函数或语句指定给事件句柄,则在该事件发生时,浏览器便执行指定的函数或语句。 //比如给按钮添加一个onclick事件,点击该按钮,执行某个函数,该函数就是事件句柄。
一、HTML事件 //DOM事件中有说过
二、DOM0级事件 //DOM事件中有说过,只能绑定一个事件
三、DOM2级事件 //可以绑定多个事件
btn.addEventListener(‘click’, function(){},false) //最后一个参数可以省略,默认为false
btn.addEventListener(‘click’, function(){},false) //两个事件可以同时触发
ps:注意这里是click,而不是onclick
removeEventListener() //里面三个参数,必须是字符串包起来的"onclick"等 | 事件句柄函数的名称 | true/false(默认false)
ps:当addEventListener的事件句柄为匿名函数时,解绑不成功。
绑定:btn.attachEvent("onclick",hello); //hello为事件句柄函数
解绑:btn.detachEvent("onclick",hello);
ps:attachEvent与detachEvent为DOM2级事件。在attachEvent中,this指向的是window
ps:这里用的是onclick,而不是click
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else(element.attachEvent) {
element.attachEvent("on" + type, handler);
}
},
removeHandler: function(element, type, handler) { //移除事件
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else(element.detachEvent) {
element.detachEvent("on" + type, handler);
}
},
}
var handler = function() {
alert("Clicked");
}
EventUtil.addHandler(btn, "click", handler);
EventUtil.removeHandler(btn,"click",handler);事件冒泡:事件对象沿DOM树向上传播
事件捕获:事件对象沿DOM树向下传播
在DOM2级事件中,addEventListener的第三个参数,true/false,默认false为事件冒泡,true为事件捕获。
var ul = document.getElementById("ul");
ul.addEventListener("click",function(event){
if(event.target.id == "one") alert(1);
else if(event.target.id == "two") alert(2);
else(event.target.id == "three") alert(3);
},false);
addEventListener("click",function(event){ //add绑定事件中,事件句柄自带event参数
console.log(event.type); //打印出当前的事件类型
console.log(event.target); //打印出当前事件源对象
console.log(event.currentTarget); //事件绑定在谁身上,就打印谁
})
clientY , pageY , screenY(clientX , pageY , screenY)
跳转链接
var a = document.getElementById("a");
a.addEventListener("click",function(){
alert(123);
preventDefault(); //本来点击a链接的时候会弹出123后,再跳转百度;但是阻止默认行为后,只是弹出123,不会进行跳转了
})
事件源对象srcElement //相当于target
阻止默认行为event.returnValue = false //相当与preventDefault()
阻止事件冒泡或事件捕获event.cancelBubble = true //相当于stopPropagation()
return event.target || event.srcElement;
},
if (event.preventDefault) event.preventDefault();
else event.returnValue = false;
},
if (event.stopPropagation) event.stopPropagation();
else event.cancelBubble = true;
}load:当页面完全加载后再window上面触发
unload:当用户从一个页面到另一个页面时触发
resize:窗口或框架被重新调整大小
scroll:当页面发生滚动时触发
click:当用户点击某个对象时调用的事件句柄。
dbclick:当用户双击某个对象时调用的事件句柄。
mousedown:鼠标按钮被按下。
mouseup:鼠标按键被松开
mouseover:鼠标移到某元素之上 //进入它的子元素也会触发
mouseout:鼠标从某元素移开 //进入它的子元素也会触发
mouseenter:鼠标移到某元素之上 //不包括它的子元素
mouseleave:鼠标从某元素移开 //不包括它的子元素
mousemove:鼠标在某元素移动。
focus:元素获得焦点。 //不支持冒泡
blur:元素失去焦点。 //不支持冒泡
focusin:元素获得焦点。 //支持冒泡
focusout:元素失去焦点。 //支持冒泡
submit:表单提交
textInput:input文本框内容发生变化 //event.data获取文本框的内容
keypress:某个键盘按键被按下并松开。//keypress 搭配 event.charCode 比较稳定。charCode返回ascll码
keydown:某个键盘按键被按下。
keyup:某个键盘按键被松开。
touchstart:手指触摸屏幕。
touchmove:手指在屏幕上滑动。
touched:手指从屏幕上移开。
DOMNodeInserted:某元素中任意元素被添加时触发。
DOMNodeRemoved: 某元素中任意元素被删除时触发。
DOMNodeInsertedIntoDocument:某元素中任意元素被添加之前时触发。
DOMNodeRemovedFromDocument:某元素中任意元素被删除之前时触发。
DOMSubtreeModified:某元素中结构发生任何变化都触发。
上一篇:认识node.js与npm
下一篇:07-JS DOM属性