JS-DOM事件流 鼠标事件对象 键盘事件对象 键盘事件

6 篇文章 0 订阅

事件流:从页面接收事件的顺序。

DOM事件流:事件的传播过程。

一、三个阶段:
1.捕获阶段:从大到小
2.当前目标阶段
3.冒泡阶段:从小到大
事件流的三个阶段
二、注意
1.js代码只能执行捕获或者冒泡一个阶段
2.addEventListener的第三个参数是true,则为捕获阶段。
捕获阶段

3.addEventListener的第三个参数是false或省略,则为冒泡阶段
冒泡阶段
4.onblur、onfocus、onmouseenter、onmouseleave这些事件没有冒泡。

事件对象

一、定义
1.写在侦听函数里的形参event
2.事件对象只有有了时间才会存在,系统自动创建,不需要传递参数。
3.事件对象是事件一系列相关数据的集合,和事件相关的。
4.可以自己命名

div.onclick = function(event) {
            alert('11');
            div.onclick = null;
        }

5.兼容性问题:IE678写法console.log(window.event)

二、常见时间对象的属性和方法(元素)
1.e.target:返回触发事件的对象(元素),this返回的是绑定事假的对象(元素)
2.常见属性和方法
3.阻止默认行为
1)组织默认行为
2)传统注册方式
传统方式
return false;也可以阻止且无兼容性问题,但return后面的代码不执行了,仅限于传统注册方式可以使用

如何阻止事件冒泡?

e.stopPropagation();阻止往上传播冒泡
e.cancelBubble=true;IE678使用
阻止方式

兼容性方案

事件委托

也称事件代理,在jQuery里面成为事件委派。
原理:把事件监听器设置在父节点书上,然后利用冒泡原理影响设置每个子节点。

常用的鼠标事件

		//禁止右键菜单
        document.addEventListener('contextmenu', function(e) {
            e.preventDefault();
        })
        //禁止选中文字
        document.addEventListener('selectstart', function(e) {
            e.preventDefault();
        })

鼠标事件对象:

Mousevent:鼠标事件

document.addEventListener('click', function(e) {
           //可视页面中点击的位置距离左侧的距离
            console.log(e.clientX);
            //可视页面中点击的位置距离上侧的距离(无视鼠标滑动)
            console.log(e.clientY);

            //整个页面中点击的位置距离左侧的距离
            console.log(e.pageX);
            //整个页面中点击的位置距离上侧的距离(鼠标滑动会影响)

            console.log(e.pageY);
            //整个页面中点击的位置距离屏幕左边的距离
            console.log(e.screenX);
            //整个页面中点击的位置距离屏幕右边的距离
            console.log(e.screenY);
        })

mousemove:鼠标移动事件

var im = document.querySelector('img');
        document.addEventListener('mousemove', function(e) {
            console.log(1)
            //top:50px要带单位
            im.style.left = e.clientX + 'px';
            im.style.top = e.clientY + 'px';
        })

键盘事件

//按下键盘弹起:
        document.onkeyup = function() {
                console.log('wo 弹起!')
            }
            //按下键盘触发
        document.onkeydown = function() {
                console.log('wo 按下!')
            }
            //按下键盘触发(不能识别键盘的功能键,ctrl、alt、↑等)
        document.onkeypress = function() {
            console.log('wo 弹起!')
        }

**三个事件的执行顺序:**keydown–keypress-keyup

//keyCode属性得到相应按键的ASCII码值(keyup和keydown不区分字母大小写,keypress区分)
        document.addEventListener('keyup', function(e) {
            console.log(e.keyCode);
        })

ASCII表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值