如何检测页面中的元素何时更改可见性?
请把问题念好。
它不仅是对:visible
伪选择器(与display: none
匹配)的引用,而且是对visibility
可见/隐藏的引用。
经过一些搜索,你可以发现有一个插件,这样做的工作.
下面是代码片段:
第一个
但是它只适用于:visible
伪选择器(不适用于visibility
可见/隐藏),并且如果您尝试将选择从单个元素$("#test_hidden")
扩展到类$(".class")
或页面$("*")
中的每个元素,则它不能很好地工作。
那么,最后,如何检测页面元素何时改变可见性呢?
有一种方法可以修改它,也 checkout elem.css("visibility","hidden") == true
,并为所有元素$("*")
启用它,或者还有其他方法可以得到所需的结果?
1条答案
按热度按时间kwvwclae1#
下面 是 一 个 示例 , 说明 如何 监控 内联 样式 以及 内部 或 外部 样式 表 的 CSS
visibility
更改 。 您 可以 注解 掉 任何 部分 ( 内联/内部/外部 ) , 以 查看 它 是否 专门 使用 该 方法 。注意 , 并 不是 所有 的 浏览 器 都 支持 这种 方式 , 因为
IntersectionObserver
构造 函数 中 的trackVisibility
选项 只 得到 有限 的 支持 。 而且 , 这种 方式 计算 可见 性 的 开销 更 大 ( 虽然 可能 比window.getComputedStyle
的 轮询 开销 小 ) , Chrome 会 在 控制 台 中 提供 以下 警告 :可见 性 的 计算 比 基本 交点 的 计算 更 昂贵 ;启用 此 选项 可能 会 对 页面 的 性能 产生 负面 影响 。 请 确保 在 启用 " trackVisibility " 选项 之前 您 * 确实 * 需要 可见 性 跟踪 。
中 的 每 一 个
基本 上 , 这 相当于 :
MutationObserver
检测 对visibility
的 内联 更改 。visibility
值 的 内部 和 外部 样式 表 , 请 使用IntersectionObserver
和trackVisibility
选项 ( 在 支持 的 浏览 器 中 ) 。这里 有 一 个 关于 CodeSandbox 的 例子 。