【发布时间】:2015-02-27 22:59:06
【问题描述】:
如何知道一个元素是否在另一个元素的前面,如果覆盖的元素是透明的?这样做的目的是,如果您通过其 ID 人为地单击页面元素,并且您要确保元素顶部没有覆盖,这将使确认单击为合成的(因为普通用户必须单击覆盖)。
案例 1: 叠加层是可点击元素的子元素检测它:确保可点击元素的子元素没有看起来不寻常。
案例 2: 叠加层有一个绝对位置和更高的 z-index 来覆盖可点击元素 检测它:没有线索!除非您遍历 DOM 中每个元素的边界矩形和 z-index,或者遍历整个 DOM 以寻找特定的样式属性。太贵了。
那么,考虑到一个元素覆盖另一个元素的方式有多种,用户脚本如何检测覆盖元素的元素?我怀疑遍历整个 DOM 的非常冗长的方法可能避免。
【问题讨论】:
-
听起来有点像您回答了自己的问题。搜索整个 DOM 可能“昂贵”,但它是可行的。
-
我正在寻找我可能没有想到的替代策略。可能有一个更快的搜索,甚至是一个 jQuery 函数来检测这种事情。因此问题。
-
我无法想象 jQuery 函数有什么不同。我的一个想法是让用户脚本发送一个鼠标移动事件,将指针放在所需的对象上,并向文档发送一个点击事件。这样,如果叠加层是动态的,它仍然可以工作。
-
据我所知,用户脚本无法做到这一点。除非它完全是第三方应用程序。
-
我不知道为什么你在这个问题上得到了这么多反对意见。这个问题或多或少是我一直希望可以解决的问题的主题。虽然你的回答并没有为我完全挖掘出尤里卡,但它是我进一步搜索的重要坐标。
标签: javascript overlay userscripts