如何检查用户是不是可以看到并单击元素?

Posted

技术标签:

【中文标题】如何检查用户是不是可以看到并单击元素?【英文标题】:How can I check if the user can see and click on an element?如何检查用户是否可以看到并单击元素? 【发布时间】:2016-04-21 09:06:18 【问题描述】:

使用document.elementFromPoint 函数可以轻松找到页面中所有真正可见和可点击的元素。但是,它会为视口之外的元素返回 null

那么,如何在整个页面中找到所有可点击和可见的元素?可见元素不仅限于样式。只需考虑一个容器<div>,它现在隐藏在所有子元素后面。因此,父 <div> 不再可见。

那么,您知道如何在页面中找到所有真正可见的元素吗?在上面的例子中,显然“Parent <div>”实际上是不可见的。还有一些其他不可预知的情况,这些元素可能不可见并且样式(displayvisibility 等)可能无法指示。

我的最终意图:我想检查一个元素是否真的对最终用户可见和可点击。作为一个示例用例,我想找到用户可能点击的所有可能区域。

【问题讨论】:

这似乎是XY problem。 XY 问题不在于问题是否清楚。我只是想弄清楚,为什么您要为最终用户找到可见元素,以及您是否要解决更广泛的问题。 也许您应该将这个问题改写为:“我如何检查用户是否可以看到某个元素?” @Xufox 我需要提前找到所有可能的区域。我的用例太复杂了,因为我打算将此结果用于机器学习算法,以进行分析,以比较数千页。 Chuck Le Butt 上面的评论非常准确。 @Kousha 好的,是一个令人满意的回应。 而且这是一个棘手的问题…… 【参考方案1】:

我认为您误解了 domApi 事件背后的基础知识。 在客户端发生的任何事件中都会有气泡和捕获。 你一定见过这样的代码document.addEventListener('click',function(),false),

这意味着使用气泡而不是捕获来处理事件。 所以实际上可点击的 dom 元素与 DOMJs 是否使用气泡或捕获有关

【讨论】:

我不确定你是否已经复习过这个问题。

以上是关于如何检查用户是不是可以看到并单击元素?的主要内容,如果未能解决你的问题,请参考以下文章

单击登录后如何重定向到下一页并检查用户凭据是不是正确

如何检查元素是不是可见并使用 JQuery 检查 URL 是不是包含字符串?

如何检查 HTML 元素是不是隐藏? [复制]

如何检查用户是不是可以看到视图[重复]

检查元素是不是对用户真正可见

如何使用PHP检查是不是在下载对话框上单击了保存按钮?