Safari鼠标点击时event.pointerType未定义的替代判断方案咨询
Safari鼠标点击事件的pointerType兼容问题及判断方案验证
问题情况
- Safari浏览器中,鼠标点击元素时
event.pointerType值为undefined,而Chrome中该值为"mouse",需要实现Safari下的等价判断以满足业务需求。 - 尝试过使用
pointerdown事件监听器,但因代码嵌套在另一个jQuery.on()监听器内部,出现首次点击不触发、两个监听器仅执行其一的问题,且无法调整jQuery监听器的触发逻辑来解决。
调试发现的判断思路
调试后发现,Safari中鼠标点击事件的originalEvent.constructor.name值为"MouseEvent",可用于判断是否为鼠标点击,但不确定该方案是否具备可靠性。
相关代码示例
构造函数名称打印测试代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("p").on("click", function(event){ console.log("print originalEvent name", event.originalEvent.constructor.name) }); }); </script> <p>Click this paragraph.</p>
业务判断逻辑代码
$(document).on("click", ".my-btn-class", function(evtParam){ if(evtParam.originalEvent && evtParam.originalEvent.constructor && evtParam.originalEvent.constructor.name === "MouseEvent"){ // 执行业务逻辑 } })
疑问
是否可以依赖originalEvent.constructor.name === "MouseEvent"这一判断逻辑,来实现Safari中的鼠标点击识别?
内容的提问来源于stack exchange,提问作者Deadpool_er
相关产品推荐
相关产品推荐

