18、事件对象

作者: 宁公子_5dce | 来源:发表于2019-08-26 21:36 被阅读0次

事件:用户的行为

事件对象 event :

储存[描述]了事件更详细的信息.

  • 事件对象就是event,类似一个盒子[其实就是一个对象],里面装了跟当前事件想换的所有详细信息,用什么自己取出来就可以了.
    比如event中就有鼠标在页面中的坐标:
    event.clientX:页面的X轴坐标
    event.clientY:页面的Y轴坐标
    event中的信息有非常多,如果我们想查看,可以将event对象打印出来:
    console.log(event)
    但是注意,事件对象只能在事件内部使用或打印,如:
document.onclick = function (){
    console.log(event)//在这里面打印或使用才可以
}

如果在事件外部打印,会返回undefined.

下面列举几种常见的事件和事件对象:

事件:

单击鼠标:onclick

用法:

obj.onclick = function (){
    //当obj被点击时执行的代码
    alert('你点击了,我就执行!')
}
鼠标右键事件:oncontextmenu
双击鼠标:ondblclick
鼠标被按下:onmousedown
鼠标被松开:onmouseup
鼠标被移动:onmousemove
鼠标移动到某元素上:onmouseover
鼠标从某元素上移开:onmouseout

事件对象:

鼠标相对浏览器窗口可视区X轴坐标:event.clientX

用法:

obj.onclick = function (){
    //当obj被点击时执行的代码
    var x = evnet.clientX;
    alert('这里是页面X轴'+x+'px ')
}
鼠标相对浏览器窗口可视区Y轴坐标:event.clientY
鼠标相对于屏幕X轴坐标:event.screenX
鼠标相对于屏幕Y轴坐标:event.screenY
浏览器可视区的宽高:
document.body.clientWidth:宽度
document.body.clientHeight:高度
元素的宽高:
obj.offsetWidth:宽度

用法:

obj.onclick = function (){
var w = obj.offsetWidth;
    //当obj被点击时执行的代码
    alert('我的宽度是'+w+'px');
}
obj.offsetHeight:高度
元素的位置信息:
obj.offsetLeft:元素到左边的距离
obj.offsetTop元素到上边的距离

更多事件 W3school Event

事件的绑定:

在js中,同一个元素的相同事件只能绑定一个,再次绑定就会把之前的事件覆盖掉,所以,如果想要绑定多个相同事件,只能通过事件绑定方法来完成

addEventListener():绑定事件方法
  • obj.addEventListener(事件字符串,绑定的函数,真假值)

1.事件字符串:需要绑定的事件的字符串形式,注意,不加on,如:
点击鼠标事件,原本是onclick,但是在这里面传入的是'click'.
2.绑定的函数:绑定的事件触发后所执行的函数,可以是回调函数,也可以是一个函数名.
3.真假值:是否阻止事件冒泡行为,默认是false,我们也可以写入false,大部分情况下保持默认就好.
注意: 此方法并不兼容IE8及以下的浏览器,所以在ie中,我们使用的是另一个方法:

  • attachEvent(事件字符串,绑定的函数)
    它只有两个参数可传
    1.事件字符串:和上面的基本一致,只不过它需要加上on,如点击事件,需传入'onclick'
    2.绑定的函数:和上面的一致.
    讲到这个我们需要注意一点, addEventListener()绑定事件的执行顺序是先绑定先执行,就像1,2,3的顺序,但是attachEvent()绑定的事件顺序是先绑定后执行,就像3,2,1的顺序,但是这个不是很重要
    重点是: addEventListener()的回调函数中的this是绑定的元素,但attachEvent()的回调函数中的this 是window

说到事件绑定不得不说一下事件的委托:

事件的委托:

比如有一下代码:

<ul>
<li>我的原来的li</li>
<li>我是原来的li</li>
</ul>
<button>点我添加li</button>

这是我们的html文档,原本ul中有两个li,我们给所有li添加单击响应函数,而且给按钮添加js代码,使其能够在被点击的时候向ul中添加li
但是我们马上就会发现,点击原本就存在的li管用,但是点击js生成的li就不管用了,这是由于我们的功能是由li执行的,但他们并不能把自己的功能分给新添加的兄弟,所以新添加li并会触发函数,那怎么解决呢?

  • 我们把原本属于它的功能交给原本就存在的它的祖先元素来执行,这就是事件的委托
    把原本属于li的功能委托给原本就存在的它的父级:ul来执行
ul.onclick = function(){
    if(event.target === li){
        alert('我弹出来了');
    }
}

所以我们还有补充一个新的event属性:

event.target:返回触发事件的源目标
  • 简单来说,就是我们点击li它就会返回li,如果li中有个a标签,我们点击a标签,它就会返回a

滚轮滚动事件:

首先声明: 获取滚动方向,我们不看返回值大小,只看正负

非火狐浏览器:onmousewheel
  • 获取滚动方向:event.wheelDelta
  • 向上滚返回120,向下滚返回-120
火狐浏览器:DOMMouseScroll
  • 获取滚动方向:event.detail
  • 向上滚返回-3,向下滚返回3

取消默认行为:

什么是默认行为:
如input的输入框,取消后则输入不进去内容
如滚轮滚动浏览器滚动条自动滚动,取消则浏览器滚动条不会滚动
由于某些原因,我们可能会遇到需要取消默认行为的地方

return false

相关文章

  • 18、事件对象

    事件:用户的行为 事件对象 event : 储存[描述]了事件更详细的信息. 事件对象就是event,类似一个盒子...

  • JavaScript事件03——事件对象

    大纲:事件对象(DOM中的事件对象,IE中的事件对象,跨浏览器) 一、事件对象 什么是事件对象? 在触发DOM上的...

  • 【事件】事件对象

    触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的额信息。(包括导致事件的元...

  • 事件对象

    事件对象:当触发某种事件时,可以获取一个对象,该对象与触发的事件是相关的,我们把他们称之为事件对象 事件对象也是一...

  • dom事件对象

    事件定义 常见事件 常见绑定方法 事件对象 鼠标键盘事件对象

  • 原生事件对象

    事件对象: 每当触发事件时,就会产生一个事件对象(不管是DOM 0 还是DOM2 都有事件对象)[ 事件对象操作的...

  • 事件

    1. 注册事件 事件监听方式: 2. 删除事件 3. 事件对象 3.1事件对象使用语法 3.2 事件对象的常见属性...

  • JavaScript(二)

    JavaScript对象 事件对象 type获取事件类型,显示事件为点击事件click target 获取事件目标...

  • this和e.target的异同

    简单分析 每次触发DOM事件时会产生一个事件对象(也称为event对象),此处的参数接收事件对象,而事件对象也有很...

  • 事件对象

    什么是事件对象?在触发DOM上的事件时都会产生一个对象 事件对象event DOM中的事件对象 (1) type属...

网友评论

    本文标题:18、事件对象

    本文链接:https://www.haomeiwen.com/subject/ssljectx.html