0
点赞
收藏
分享

微信扫一扫

JavaScript - 5

晚熟的猫 2022-02-07 阅读 9

一、事件高级

一、注册事件(绑定事件)

给元素添加事件,两种方式:

1. 传统方式:onclick等

同一个元素同一事件只能设置一个处理函数,最后注册的处理函数将会覆盖前面注册的处理函数。

2. 方法监听注册方式:w3w标准 推荐方式

  • addEventListener()是一个方法
  • IE9之前不支持EventListener()
  • 同一个元素同一个事件可以注册多个监听器,按注册顺依次执行

例如:

btns[1].addEventListener('click' , function(){

alert('hi');

})

二、删除事件(解绑事件)

1. 传统注册方式evenTarget.onclick = null;

2. 方法监听注册方式

eventTarget.removeEventListener(type, listener[, useCapture]); eventTarget.detachEvent(eventNameWithOn, callback);

三、DOM事件流(重点)

事件传播的过程叫DOM事件流

 

  •  JS代码中只能执行捕获或者冒泡其中的一个阶段
  • onclick和attachEvent只能得到冒泡阶段
  • addEventListener(type, listener[, useCapture])第三个参数如果是 true,表示在事件捕获阶段调用事件处理程序;如果是 false(不写默认就是false),表示在事件冒泡阶段调用事件处理程序。
  • 实际开发中更关注事件冒泡
  • 有些事件是没有冒泡的,比如 onblur、onfocus、onmouseenter、onmouseleave

四、事件对象(重点)

  • 事件对象写在监听函数的小括号里 当形参看
  • 只有有了事件才会存在 是系统自动创建的 不需要我们传递参数
  • 是实践的一系列相关数据的集合 跟事件相关的 比如鼠标点击里包含了鼠标相关的信息
  • 可以自己命名 event、evt、e
  • ie678通过window.event 兼容性写法:e = e || window.event

 1. 事件对象的常见属性和方法

属性不加括号 方法要加括号!!!

  • e.target 和 this 的区别:   this 是事件绑定的元素, 这个函数的调用者(绑定这个事件的元素)   e.target 是事件触发的元素(点了哪个返回哪个)。
  •      a.addEventListener('click',function(e){

            e.preventDefault();  //DOM标准写法 阻止链接跳转

        })

五、阻止事件冒泡(重点

事件冒泡:开始时由具体的元素接收 然后逐级向上传播到DOM最顶层节点

  • 标准写法:利用事件对象里面的 stopPropagation()方法  e.stopPropagation()
  • 非标准写法:IE 6-8  利用事件对象 cancelBubble 属性  e.cancelBubble = true;

六、事件委托(代理、委派)

jQuery里成为事件委派

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

七、常用的鼠标事件(看.html实例)

1. 禁止鼠标右键菜单  contextmenu 

document.addEventListener('contextmenu', function(e) { e.preventDefault(); })

2. 禁止鼠标选中  selectstart

document.addEventListener('selectstart', function(e) {     e.preventDefault();    })

3. 鼠标事件对象 MouseEvent

  • 1,2注意是可视区范围内 
  • 3,4是相对于页面文档的距离

八、常用的键盘事件

  •  用监听addEventListener 记得去掉on
  • keypress 和前面2个的区别是,它不识别功能键,比如左右箭头,shift 等。
  • 三个事件的执行顺序是: keydown --  keypress  --- keyup

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

 !!!京东快递单查询.html!!!

举报

相关推荐

0 条评论