事件(上)

事件的概述:事件相当于一个(执行者执行 -- 观察者观察 -- 处理函数执行)的流程,这个流程称为事件。是一个异步机制。

事件的组成:

    1、事件名 (内置的)

    2、执行对象 (元素对象)

    3、处理函数 (自定义函数)

    4、观察者 (js的事件引擎)

在js内书写的事件,他的观察者都是事件引擎。 我们需要关注就是前面的三个内容(事件名、执行对象、处理函数)

事件的声明书写方式:

    1、内联模式(在标签内部)

<!-- 内联模式就是在onclick书写中设置对应的代码 -->

<buttononclick="alert('你好')">点我</button>

<buttononclick="fn(1)">点我</button>

<script>

functionfn(arg){

alert('我是函数执行'+arg);

   }

</script>

    2、脚本模式 (在script中),比较常用

//脚本模式的写法 事件名 执行对象 处理函数

varbtn=document.getElementsByTagName('button')[2]

//执行对象.on+事件名 = 处理函数

btn.onclick=function(){

console.log('你好');

}

functionhandler(){

console.log('处理函数执行了');

}

btn.onclick=handler

内联模式和脚本模式的区别:

    1、内联模式里面的函数需要手动调用,而对应的脚本的模式的处理函数自动调用

    2、内联模式里面的函数调用的this指向window 对应的脚本模式里面的处理函数的this指向当前的调用者

事件名的分类:

    1、鼠标事件(鼠标触发的 mouse

        onclick 单击事件

        ondblclick 双击事件

        onmousedown 按下

        onmouseup 弹起

        onmouseenter 移入

        onmouseleave 移出

        onmouseover 移入

        onmouseout 移出

        onmousemove 移动

        oncontextmenu 右键点击

注意事项:click和对应mousedown和mouseup的执行顺序  (mousedown -- mouseup -- click)

mouseenter(mouseleave)和mouseover(mouseout)的区别: mouseenter 子元素不会触发,mouseover子元素会触发。

    2、键盘事件 (键盘触发的 key)

        onkeydown 按下

        onkeyup 弹起

        onkeypress 字符串(除功能键的其他键)

注意事项:

        1、执行顺序 :onkeydown - onkeypress - onkeyup

        2、onkeypress 一定会触发 onkeydown

HTML事件 (HTML中自带的一些事件(只能用于专门HTML))

    1、window的事件

        onload  加载事件

        onunload  卸载事件

        onclose  关闭窗口的事件 

        onbeforeprint  打印之前调用的事件 

       onbeforeunload  卸载之前调用的事件 

        onscroll   滚动栏发生变化的事件 

    2、表单的事件

        onsubmit 表单提交事件

        onreset 表单重置事件

        onselect 内容被选中(只针对于输入框和文本域)

        onchange 表单的value值发生变化

        oninput 可输入的表单标签里面进行输入

        onblur 失去焦点

        onfocus 获取焦点

    3、相关聚焦和失焦的方法

         focus 聚焦的方法

         blur 失焦的方法

//element也具备 focus() blur()

document.querySelector('input').focus()

setTimeout(function(){

document.querySelector('input').blur()

},3000)

event 事件源对象

event的概述:event 被称为事件源对象,是一个全局的内置对象(属于window),里面包含了一些关于事件执行的相关的属性。

处理函数中Arguments

概述:处理函数也是一个函数,函数就具备一个arguments的属性。argments是一个伪数组。那么就可以知道对应的处理函数里面也拥有arguments

从上述代码可得到对应的事件执行的处理函数里面会传递一个参数 ,这个参数的类型是一个event。这个处理函数的arguments数组里面只有一个元素。

故而我们可以简写为:

event的常用属性:

    1、鼠标坐标的相关属性

        screenX 表示鼠标离屏幕的X距离

        screenY 表示鼠标离屏幕的Y距离

        pageX 表示当前的鼠标离页面的X距离(包含卷起部分)

        pageY 表示当前的鼠标离页面的Y距离(包含卷起部分)

        clientX 表示鼠标离页面可视区的X距离

        clientY 表示鼠标离页面可视区的Y距离

        offsetX 表示鼠标离父元素偏移的X距离

        offsetY 表示鼠标离父元素偏移的Y距离

    2、按钮辅助的相关属性

        ctrlKey 是否按下了ctrl键

        altKey 是否按下了alt键

        shiftKey 是否按下shift键

//辅助的按键属性 返回布尔类型值

console.log(e.ctrlKey);//是否长按ctrl

console.log(e.altKey);//是否长按alt

console.log(e.shiftKey);//是否长按shift

    3、鼠标相关的属性

        button 按下是那个键

//按下的键是什么 三个值 0 1 2

console.log(e.button);//左键0 中间滚轮1 右键2

    4、事件及相关触发的属性

        type 当前的事件类型

//事件类型 返回事件名

console.log(e.type);//click

        target 表示当前事件的触发对象

//触发者元素

console.log(e.target);

        currentTarget 表示加事件的元素

//加事件的元素

console.log(e.currentTarget);

    5、键盘相关的属性

        key 表示当前按下的键的字符(区分大小写)

        keyCode (在keydown里面 不区分大小 全部是大写的ascii码)

        code (key+大写的字符)

        charCode (在keypress里面才管用 区分大小写 返回对应的ascii码)

window.onkeypress=function(e){

console.log(e.code);//当前的按钮按下键是哪个一个 返回的是一个key+大写字母

console.log(e.keyCode);//当前按下键的大写字母 ascii码

console.log(e.charCode);//当前字符的ascii码 keypress里面

console.log(e.key);//表示当前按下的键 (兼容问题)

}

    2、事件委托机制(事件代理)

概述:将对应的事件委托给对应的父元素,然后通过对应的e.target获取实际的触发元素进行操作。

事件委托的运用场景:在一个父元素里面有多个子元素要添加相同的事件的时候。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容