dispatch note(dispatchEvent解决重叠元素响应事件示例详解)
1.背景
在日常的工作中 ,有这样一个情景 ,两个兄弟元素完全重叠在一起,当触发一个事件的时候 ,只触发了上面的那一层 ,下面的没有触发 ,或者上面的一层负责点击事件 ,下面的一层负责滚动或者滑动事件 。点击事件的响应者会将下面那一层的事件给遮挡 。
2.解决思路
2.1使用pointer-events
pointer-events是css中设置事件响应情况的样式当值为none的时候对所有事件都是不响应的 ,但是由于上面那一层也需要响应事件所以此方式失败。
2.2使用preventDefault和stopPropagation
preventDefault和stopPropagation是对事件冒泡和捕捉的阻止 ,但是由于冒泡和捕捉是父子元素之间的情况 ,所以无法处理兄弟元素之间的情况 。所以又失败 。
2.3使用dispatchEvent发送响应事件
dispatchEvent可以向其他元素发送模拟的事件 element.dispatchEvent(event)
比如创建鼠标事件,然后再分发(e为传入事件)
此种方式已经被废弃但是浏览器仍支持 ,同时个人感觉浏览器兼容性不足 ,一些浏览器专属的字段不会设置,无法改变 还有一种使用Event类进行创建(e为传入事件)
每一种Event要使用不同的Event类创建
综合后结果就是(e为传入事件)
这段代码未做兼容测试 ,谨慎使用
3.可以使用场景
多个元素重叠但需要响应不同的事件 多个元素重叠但需要全部有响应 事件委托 特定事件的穿透前一个元素(可以指定事件的pointer-events)以上就是dispatchEvent解决重叠元素响应事件示例详解的详细内容 ,更多关于dispatchEvent重叠元素响应的资料请关注本站其它相关文章!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!