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