为了账号安全,请及时绑定邮箱和手机立即绑定

浏览器中事件的触发顺序

标签:
JavaScript

在浏览器中,同一个 DOM 元素可以绑定多个事件,这些事件并不是同时触发的,它们的触发是有顺序的,并且和浏览器本身的实现有关,不同的浏览器事件的顺序不一样。

PC 端浏览器

我们试图在浏览器中运行如下 JS,来测试一下事件触发的顺序:

<script>window.onload = function(){    var btn = document.getElementById("btn");
    btn.onfocus = function() {        console.log("onfocus");
    };
    btn.onmouseover = function() {        console.log("onmouseover");
    };
    btn.onmousedown = function() {        console.log("onmousedown");
    };
    btn.onmouseout = function() {        console.log("onmouseout");
    };
    btn.onmouseup = function() {        console.log("onmouseup");
    };
    btn.onclick = function() {        console.log("onclick");
    };
    btn.onblur = function() {        console.log("onblur");
    };
};</script>

在 Chrome 中执行顺序如下:

  • onmouseover

  • onmousedown

  • onfocus

  • onmouseup

  • onclick

  • onmouseout

  • onblur

Mobile 端浏览器

由于 Mobile 端增加了touch事件,这样我们需要把脚本做下修改,增加和 touch 相关的事件:

<script>window.onload = function(){    var btn = document.getElementById("btn");
    btn.onfocus = function() {        console.log("onfocus");
    };
    btn.onmouseover = function() {        console.log("onmouseover");
    };
    btn.ontouchstart = function() {        console.log("ontouchstart");
    };
    btn.ontouchcancel = function() {        console.log("ontouchcancel");
    };
    btn.ontouchend = function() {        console.log("ontouchend");
    };
    btn.ontouchmove = function() {        console.log("ontouchmove");
    };
    btn.onmousedown = function() {        console.log("onmousedown");
    };
    btn.onmouseout = function() {        console.log("onmouseout");
    };
    btn.onmouseup = function() {        console.log("onmouseup");
    };
    btn.onclick = function() {        console.log("onclick");
    };
    btn.onblur = function() {        console.log("onblur");
    };
};</script>

在 iOS 的 safari 中执行顺序如下:

  • ontouchstart

  • ontouchend

  • onmouseover

  • onmousedown

  • onfocus

  • onmouseup

  • onclick

  • onblur




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
12
获赞与收藏
135

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消