如何确定html中每个节点的css文本

如何迭代网页的HTML节点并获取其中每个节点的CSS文本? 我需要像Firebug一样的东西,如果点击一个Node,它会为你提供与该节点相关的所有CSS文本的完整列表(甚至是inheritance的样式)。

我的主要问题是实际上没有迭代HTML节点。 我正在使用Html Agility Pack库。 我只需要为每个节点获得完整的CSS。

ps我很抱歉,我应该已经解释过我想用C#(不是javascript)来做这件事

我发现以下代码片段对页面中的所有元素都有用,并且它们的’CurrentStyle’属性显示了它们的计算样式:

HTMLDocument doc = (HTMLDocument)axWebBrowser1.Document; var body = (HTMLBody)doc.body;//current style var childs = (IHTMLDOMChildrenCollection)body.childNodes; var currentelementType = (HTMLBody)childs.item(0); var width = currentelementType.currentStyle.width; 

请注意,根据我的上一篇文章,axWebBrowser1是一个WebBrowser控件。

如果你想要一个元素的当前样式,请查看getComputedStyle() ,但如果你想要inheritance,那么你可能必须实现样式级联。 Firebug在幕后做了很多工作来生成你看到的东西!

您可以从style属性中获取CSS文本,如下所示:

 node.getAttribute('style') 

或者如果你想要样式,你可以迭代键和值

 node.style 

如果要获取元素的整个计算样式而不仅仅是样式属性中应用的CSS,请阅读有关计算和级联样式的本文。

您可以在C#中使用WebBrowser控件来访问htm文档对象并按如下方式转换其body标记:

 HTMLDocument doc = (HTMLDocument)axWebBrowser1.Document; var body = (HTMLBody)doc.body; 

但在此之前,你应该为你的项目添加com refrence:MSHTML。 在这里,您可以访问body.currentStyle,它显示可能是css或内联样式的所有样式。

您可以尝试for (property in objName)运算符,如此处所示。

我不确定你是否可以简单地使用JavaScript来获取“所有”CSS属性,你可以查看[DOMNode].currentStyle[DOMNode].styledocument.defaultView.getComputedStyle thingamajiggy’s。 它们应该包含他们拥有的“当前”风格。 你可以做的是拥有一个你要测试的所有CSS属性的数组,并简单地通过你自己的函数循环它们,使用前面提到的方法获取所有内容的CSS属性(取决于哪个浏览器)。 我通常首先尝试DOMNode.style[property]因为这是“内联”javascript并且总是对所有内容进行规则,然后我会嗤之以鼻,如果浏览器使用.currentStyle方法或.getComputedStyle并使用正确的方法。

它并不完美,您可能需要清理一些东西(高度:自动;到实际当前高度,某些浏览器可能会返回RGB颜色而不是HEX)等。

所以,是的,我不知道你可以在Javascript中使用什么预制件。