为了账号安全,请及时绑定邮箱和手机立即绑定

JS获取页面可视化元素

JS获取页面可视化元素

人到中年有点甜 2019-03-29 22:09:21
现在想通过JS获取页面上看得见的元素(可视化元素)。初步做法是遍历页面所有节点,根据一定条件判断元素是否为可视化元素。我的想法有两个:通过一定条件筛选可视化元素通过一定条件剔除非可视化元素其实两者差别可能不会太大,判断条件也会存在一些交集,我先说说两者区别:第一种入手比较困难(我现在能想到的就是枚举可视化元素,再判断它们的一些属性如display、visibility等),因为可视化元素具备的特征很多,所以整个判断条件可能会很复杂。但是优点在于,只要符合条件的元素就一定是可视化元素。第二种和第一种其实也差别不大,但是思考起来比较好入手,首先CSS属性display为none、visibility为hidden的元素就可以剔除,script、noscript等标签也可以剔除,还有一些如input[type="hidden"]的元素,但是实际上,要做到准确筛选,也很不容易。所以它的缺点在于,筛选条件必须足够严格,否则剔除不彻底的话,筛选结果可能就会慘杂非可视化元素。其实还有一些特殊条件,譬如说被一些元素被浮动元素全部遮挡了,那这个元素也应该被剔除。其实个人觉得用JS获取可视化元素这个思路本身就不靠谱,如果想要对可视化元素展开业务操作的话,是可以通过动态捕捉事件的触发元素来实现的。但是这个坑已经挖了,就想在SF上听听大家的看法。请轻喷。
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

如果说被遮挡的也要算成看不见的,那么答案就是做不到
我有图片本身形状任意的png图片挡一层
我有随便乱画的canvas挡在上面挡一层
我有css3animation导致opacity一会1一会儿非1的元素。位置也可以动来动去
我可以用border来遮挡,也可以用text-shadowbox-shadow来遮挡
那么某个像素到底有没有被遮挡呢?godonlyknows
那么你的元素里这么多个像素是否均被遮挡呢?godonlyknows
至于其他情况一切好谈,去挖jQ的:visible代码就好
                            
查看完整回答
反对 回复 2019-03-29
?
隔江千里

TA贡献1906条经验 获得超10个赞

jQuery(':visible')?
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 620 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号