web API 介绍 及DOM对象 (2),前端开发网站

本文详细介绍了JavaScript中的事件处理、事件对象的结构、DOM事件流的工作原理,包括捕获和冒泡阶段,以及鼠标事件对象的特点。重点讲解了如何删除事件、事件委托的应用,并提供了一份前端学习资源指南。
摘要由CSDN通过智能技术生成

}

这里调用函数 fn 不用加括号

3、attachEvent()(了解)

语法:eventTarget.attachEvent(eventNameWithOn,callback)

参数:​​​​​​​

  • callback 事件处理函数 当目标触发事件时回调函数被调用
  • eventNameWithOn 事件类型字符串 比如 onclick、onmouseover  这里要带on
  • ie9以前的,不提倡使用

二、删除事件的方式

=========

  • 传统方式删除事件    eventTarget.onclick = null

divs[0].onclick = function () {

alert(11);

//传统方式解绑

divs[0].onclick = null;

}

  • 方法监听解绑事件    eventTarget.removeEventListener(事件,调用处理函数)

注意写法

//方法监听注册解绑

divs[1].addEventListener(‘click’,fn)

function fn() {

alert(22);

divs[1].removeEventListener(‘click’ ,fn)

}

  • eventTarget.detachEventEvent()       ie9以前的解绑方式

//ie9以前的解绑

divs[2].attachEvent(‘onclick’,fn1);

function fn1() {

alert(33);

divs[2].detachEventEvent(‘onclick’,fn1);

}

三、事件对象

=======

3.1、什么是事件对象:

div.onclick = function(event){ }

  • event就是一个事件对象。写到我们侦听函数的小括号里面,当形参来看
  • 事件对象只要有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数
  • 事件对象 是我们事件的一系列相关数据的集合,跟事件相关的, 比如鼠标点击 里面就包含了鼠标的相关信息(鼠标的坐标等);如果是键盘事件 里面就包含了键盘事件的信息,比如:判断用户按下了什么键
  • 这个事件对象我们可以自己命名 比如:event、evt、e
  • 事件对象也有兼容性问题 ie678通过window.event 兼容性的写法 :加个条件 e=e || window.event ;

3.2、事件对象常见的属性和方法

属性说明(e是事件对象)
e.target

返回触发事件的对象  标准的

和this区别:this指的是绑定事件的对象;e.target是触发事件的对象 也就是点击了哪个元素就返回哪个元素

e.type

返回事件类型

触发什么样的事件.  比如click事件就返回click

e.returnValue

该属性阻止默认事件 不标准

比如:让链接不跳转、让提交按钮不提交

可以利用return false 也可以阻止默认事件行为 没有兼容性问题

e.cancelBubble

等于true 就是停止冒泡

非标准

方法()说明
e.stopPropagation() 方法阻止冒泡  标准  DOM推荐
e.preventDefault() 

该方法阻止默认事件 标准

用于事件高级注册事件的方法里面

比如:让链接不跳转、让提交按钮不提交

四、DOM事件流(重点)

============

事件流:事件流描述的是从页面接受中接受事件的顺序

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流

阶段:

  • 捕获阶段 - 从文档流开始往下

  • 当前目标阶段-拥有事件的元素节点

  • 冒泡阶段-从目标阶段往上的阶段

注意:

  • 实际开发中我们很少使用事件捕获,我们更关注事件冒泡​​​​​

  • 有些事件使没有冒泡的,比如:onblur、onfoucs、onmousenter、onmouseleave

  • 事件冒泡有时候会带来麻烦 有时候又会帮助很巧妙的做某些事情

  • js代码中能执行捕获或者冒泡其中的一个阶段

  • 以前的传统事件onclick和attachEvent只能得到冒泡阶段

  • 验证就用eventTarget.addEventListener(type,listener[,useCapture])  第三个参数如果是true,表示在事件捕获阶段调用事件处理程序 如果是false 表示在事件冒泡阶段调用事件处理程序

根据事件冒泡的好处和坏处的情况

1、坏处:当执行了当前点击事件 后父节点如果添加了点击事件 在执行了当前点击事件后 会向上执行点击事件

此时就需要我们 阻止冒泡

语法:e.stopPropagation()

是标准的

语法:e.cancelBubble

非标准

有两个点击事件 son点击了 father不会点击

2、好处:事件委托

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

比如:如果要给每个li一个点击事件,不需要循环注册点击事件 而是给ul利用冒泡找到监听

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

比如:给ul注册点击事件,然后利用事件对象的target来找到当前点击的li,因为点击li,事件会冒泡到ul上,ul有注册事件,就会触发监听器

作用:只操作了一次DOM,提高了程序的性能

    • 你好
    • 你好
    • 你好
    • 你好
    • 你好
    • 五、鼠标事件对象

      ========

      event对象代表事件的状态,跟事件相关的一些列信息的集合

      5.1、鼠标事件对象 MouseEvent


      属性说明
      e.clientX    和   e.clentY返回 鼠标相对于浏览器窗口可视区的X坐标和Y坐标
      e.pageX     和   e.pageY返回 鼠标对于文档流页面的X坐标和Y坐标 ie9 + 支持
      e.screenX   和   e.screenY返回 相对于电脑屏幕的X,Y坐标

      鼠标移动事件 mousemove

      鼠标不断的移动,使用鼠标移动事件

      **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

      深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      img

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

      如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

      结尾

      正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

      以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

      戳这里免费领取前端学习资料

      讲义、实战项目、讲解视频,并且会持续更新!**

      如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

      结尾

      正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

      以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

      戳这里免费领取前端学习资料

      前端学习书籍导图-1

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值