DOM事件高级导读

1.注册事件

给元素添加事件,称为注册事件或者绑定事件

注册事件有两种方式:传统方式和方法监听注册方式

addEventListener()事件监听方式

eventTarget .addEventListener(type,listener [,useCapture])
eventTarget.addEventListener ()方法将指定的监听器注册到eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数。


该方法接收三个参数︰
type :事件类型字符串,比如click、mouseover ,注意这里不要带on
listener :事件处理函数,事件发生时,会调用该监听函数
useCapture:可选参数,是一个布尔值,默认是false。学完DOM事件流后,我们再进一步学习

注意要加引号:‘’

  btns[1].addEventListener('click', function() {
            alert('加油周周');
        });
       

注册事件兼容性解决方案
function addEventListener(element, eventName,fn){
//判断当前浏览器是否支持addEventListener方法if (element.addEventListener) {
element.addEventListener(eventName,fn);1/第三个委数J认是false} else if (element.attachEvent) {
element.attachEvent ( 'on' + eventName,fn) ;}else {
//相当于element.onclick = fn;element [ 'on' + eventName] = fn;
}
兼容性处理的原则:首先照顾大多数浏览器,再处理特殊浏览器

removeEventListener

 

DOM 事件流

事件流描述的是从页面中接收事件的顺序。
事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。

DOM对象

eventTarget.onclick = function (event) {
//这个event就是事件对象,我们还喜欢的写成e或者evt}
eventTarget.addEventListener (' click', function (event) {ll/这个event就是事件对象,我们还喜欢的写成e 或者evt})

 

e.target和this

区别: e.target点击了那个元素,就返回那个元素 this 那个元素绑定了这个点击事件,那么就返回谁

阻止默认事件

e.preventDefault();       e.type

e.target    返回触发事件的对象    标准
e.srcElement   返回触发事件的对象    非标准ie6-8使用
e.type     返回事件的类型比如click mouseover不带on
e.cancelBubble     该属性阻止冒泡非标准ie6-8使用
e.returnValue        该属性阻止默认事件(默认行为)    非标准ie6-8使用比如不让链接跳转
e.preventDefault()        该方法阻止默认事件(默认行为)标准比如不让链接跳转
e.stopPropagation()      阻止冒泡标准

事件委托

事件委托也称为事件代理,在jQuery里面称为事件委派。

事件委托的原理

不是每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点。

鼠标事件对象

e.clientX返回鼠标相对于浏览器窗口可视区的×坐标
e.clientY返回鼠标相对于浏览器窗口可视区的Y坐标

e.pagex返回鼠标相对于文档页面的×坐标IE9+支持
e.pageY返回鼠标相对于文档页面的Y坐标IE9+支持
e.screenX返回鼠标相对于电脑屏幕的坐标
e.screenY返回鼠标相对于电脑屏幕的Y坐标

 跟随鼠标移动代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img {
            position: absolute;
            top: 2px;
        }
    </style>
</head>

<body>
    <img src="img/angel.gif" alt="">
    <script>
        //获取元素
        var str = document.querySelector('img');
        document.addEventListener('mousemove', function(e) {
            var x = e.pageX;
            var y = e.pageY;
            console.log('x坐标是' + x, 'y的坐标是' + y);
            //要给left top+个px
            str.style.left = x - 30 + 'px';
            str.style.top = y - 40 + 'px'
        })
    </script>
</body>

</html>

常用键盘事件

onkeyup某个键盘按键被松开时触发
onkeydown某个键盘按键被按下时触发
onkeypress某个键盘按键被按下时触发 注意︰但是它不识别功能键比如ctrl shift 箭头等

键盘对象属性
keyCode    返回该键的ASCII值  ASCII网上搜

注意:onkeydown和onkeyup 不区分字母大小写,onkeypress区分字母大小写。在我们实际开发中,我们更多的使用keydown和keyup,它能识别所有的键(包括功能键)Keypress不识别功能键,但是keyCode属性能区分大小写,返回不同的ASCII值

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值