点击失效?先问一句谁挡住了我
【摘要】 前端排查里有一个经典场景:同一个页面,用户点得动,脚本点不动。
前端排查里有一个经典场景:同一个页面,用户点得动,脚本点不动。
很多人第一反应是选择器写错了,于是换定位方式、加重试、改坐标,折腾半天发现还是不行。其实可以先问自己一个问题:这个点击,到底落在了哪个元素上?
浏览器提供了 elementFromPoint 这个接口,传入屏幕坐标,它会告诉你那个位置上"最顶层"的元素是谁。如果返回的不是你想要的按钮,而是一个看起来透明的容器,答案就出来了——有一层看不见的遮罩挡在中间。
这层遮罩常见的来源有三种:新手引导层、全屏弹窗的透明背景、以及各种埋点用的浮层。它们大多设置了 pointer-events 或者干脆就是一个覆盖全屏的透明节点,视觉上毫无存在感,交互上却是一堵墙。
解决办法也很朴素:找到遮罩,把它从 DOM 里移除,再点击。一次成功的点击,胜过一百次盲目的重试。
还有一个更容易被忽略的点:有些按钮在折叠状态或悬浮工具栏里,本身尺寸是零。你以为点到了按钮,其实点到的是包着它的空壳。这种情况下要先让工具栏展开,或者筛选出真正可见的那个元素再操作。
总结成一句话:点击失效不要急着换姿势,先用 elementFromPoint 问一句"谁挡住了我"。答案往往一行代码就能解决。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)