JS的事件类型(详解)

摘要

Web浏览器可能发生的事件有很多种类型,而这一篇我们针对于不同的浏览器的事件类型来说明一下,我们从DOM3级事件中总结了一下几种类型的事件:

事件 类型作用意义
UI事件当用户在页面上的元素进行交互时触发
焦点事件当元素获得或失去焦点时触发
鼠标事件当用户通过鼠标在页面上执行操作时触发
滚轮事件当使用鼠标滚轮时触发
文本事件当在文档中输入文本时触发
键盘事件当用户通过键盘在页面上执行操作时触发

当然除了这些类型我们还有一些其他类型的事件,不过在这里我们不做太多解释。

1.UI事件

UI事件指的是那些不一定与用户操作有关的事件。我们在这里列举四个:

(1) load

当页面完全加载后再window上面触发,当图像完全加载完在img元素上触发。
我们想要在页面完全加载完之后做出什么操作就可以这样:

        window.onload = function(){
            console.log('页面加载完毕');
        }

(2) unload

当页面完全写卸载后在window上触发,与load事件正好相对应。只要用户从一个页面切换到另一个页面,就会触发unload事件。

而我们利用这个事件最多的办法是清除引用,以避免内存泄漏。

(3) resize

当浏览器窗口被调整到一个新的高度或者宽度的时候,这个事件就会被触发。
我们来举个栗子:

        window.onresize = function(){
            console.log('页面大小改变了');
        }

这样只要浏览器的窗口大小改变,就会触发这个事件。

(4) scroll

当浏览器的滚动条在滚动的情况下,这个事件就会被触发。
我们再举个栗子:

<body style="height: 2000px;">
    <script>
        window.onscroll = function(){
            console.log('滚动条在滚动');
        }
    </script>
</body>

当我们给body的高度设置的大一点,这样就会有滚动条,然后当我们滚动条滚动后,就会触发这个事件。

2.焦点事件

焦点事件会在页面元素获得或失去焦点的时候触发。这一类事件最主要的两个是focus和blur,但是记住这两个事件是不冒泡的。

<input type="text" id="text">
    <script>
        text.onfocus = function(){
            console.log('获取焦点');
        }
        text.onblur = function(){
            console.log('失去焦点');
        }
    </script>

像这个例子中,当我们点击输入框时,会触发获取焦点的事件,点击外部后,会触发失去焦点的事件。

3.鼠标事件

鼠标事件是Web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备。
这里我们把最常用的事件列举出来:

事件类型作用
click用户单机鼠标或按下回车键时触发
dblclick用户双击鼠标时触发
mousedown用户按下了鼠标按钮的时候触发
mouseup用户释放鼠标按钮的时候触发
mousemove当鼠标指针在元素内部移动的时候触发
mouseout在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发。
mouseover在鼠标指针位于一个元素外部,然后用户首次移入另一个元素边界内时触发

我们先来看点击事件

<button id="btn">点击</button>
    <script>
        btn.ondblclick = function(){
            console.log('双击事件');
        }
        btn.onclick = function(){
            console.log('单机事件');
        }
        btn.onmousedown = function(){
            console.log('按下事件');
        }
        btn.onmouseup = function(){
            console.log('释放事件');
        }
    </script>

如果我们双击了一个元素,事件触发的顺序是这样的:

按下事件
释放事件
单机事件
按下事件
释放事件
单机事件
双击事件

然后我们再来看移入移出的事件:

<div id="div1"></div>
    <script>
        div1.onmousemove = function(){
            console.log('mousemove事件触发');
        }

        div1.onmouseout = function(){
            console.log('mouseout事件触发');
        }

        div1.onmouseover = function(){
            console.log('mouseover事件触发');
        }
    </script>

当我们把鼠标移入到div内部的时候,会触发mouseover事件,当我们从元素内部移出的时候,会触发mouseout事件。

但只要我们在div内部移动鼠标,就会触发mousemove事件。

4.键盘事件

用户在使用键盘的时候会触发键盘事件,这里有三个事件:

(1) keydown:

当用户按下键盘的任意键时触发

(2) keypress:

当用户按下键盘上的字符键时触发

(3) keyup:

当用户释放键盘的键时触发

虽然所有的元素都支持以上三个事件,但只有用户通过文本输入框输入文本时才最长用到。

然后值得注意的是,当发生keydown和keyup事件的时候,event对象的keyCode为该键的键值。

OK,关于一些常见的事件类型,就说这些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值