文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

dispatchEvent解决重叠元素响应事件示例详解

2024-04-02 19:55

关注

1.背景

在日常的工作中,有这样一个情景,两个兄弟元素完全重叠在一起,当触发一个事件的时候,只触发了上面的那一层,下面的没有触发,或者上面的一层负责点击事件,下面的一层负责滚动或者滑动事件。点击事件的响应者会将下面那一层的事件给遮挡。

2.解决思路

2.1使用pointer-events

pointer-events是css中设置事件响应情况的样式当值为none的时候对所有事件都是不响应的,但是由于上面那一层也需要响应事件所以此方式失败。

2.2使用preventDefault和stopPropagation

preventDefault和stopPropagation是对事件冒泡和捕捉的阻止,但是由于冒泡和捕捉是父子元素之间的情况,所以无法处理兄弟元素之间的情况。所以又失败。

2.3使用dispatchEvent发送响应事件

dispatchEvent可以向其他元素发送模拟的事件 element.dispatchEvent(event)

比如创建鼠标事件,然后再分发(e为传入事件)

    let event=document.createEvent("MouseEvent")
    event.initMouseEvent(type, e.bubbles, e.cancelable, e.view, 
    e.wheelDelta||e.detail, e.screenX, e.screenY, e.clientX,
    e.clientY, e.ctrlkey, e.altkey, e.shiftkey, e.metakey, e.button, null);
    target.dispatchEvent(event)

此种方式已经被废弃但是浏览器仍支持,同时个人感觉浏览器兼容性不足,一些浏览器专属的字段不会设置,无法改变 还有一种使用Event类进行创建(e为传入事件)

    let event=new MouseEvent(e.type,{
        bubbles:e.bubbles, 
        cancelable:e.cancelable,
        view:e.view, 
        detail:e.detail, 
        screenX:e.screenX, 
        screenY:e.screenY, 
        clientX:e.clientX,
        clientY:e.clientY, 
        ctrlkey:e.ctrlkey,
        altkey:e.altkey,
        shiftkey:e.shiftkey, 
        metakey:e.metakey, 
        button:e.button,
    })
    target.dispatchEvent(event)

每一种Event要使用不同的Event类创建

综合后结果就是(e为传入事件)

let init={}
for(let i in e){
  init[i]=e[i]
}
let event=new e.constructor(e.type,init)
target.dispatchEvent(event)

这段代码未做兼容测试,谨慎使用

3.可以使用场景

以上就是dispatchEvent解决重叠元素响应事件示例详解的详细内容,更多关于dispatchEvent重叠元素响应的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯