如何删除所有隐藏的元素?
问题描述:
我正在寻找一种方法去除HTML文档中隐藏的所有元素。如何删除所有隐藏的元素?
我可以删除包含样式display:none
或visible:hidden
的元素,但那些因为它们的CSS类而隐藏的元素呢?有没有办法看类似“item-description”的DIV
,并知道这个类的样式表包含display:none
?
答
由于HtmlAgilityPack没有考虑样式,所以没有办法知道这一点,只有DOM。
如果你想真正能够后处理的样式已经载入你的HTML必须
- 解析CSS(以下所有
@imports
和其他技巧) - 通过应用每个规则的每个DOM节点使用选择器
- 应用继承规则以查看隐藏或不隐藏,具体取决于父级别和规则
- 解决一致性问题(如果组件是可见的而不是父级?如何转换成您的最终组件文件?)
- 我希望你决定在你想要模拟的浏览器,因为一些CSS规则将适用于特定的浏览器。
- 我也希望你没有的JavaScript触及页面上的DOM ...
我敢肯定,我忘了做更多的事情......不要去那里!有grues!
如果你真的想在C#中得到这个结果,也许嵌入一个渲染引擎,然后通过javascript查询它将是更好的方法。