从IE中的HtmlElement的Dom获取IHTMLStyle3

我在表单上有一个System.Windows.Form.WebBrowser控件。 我将该浏览器对象导航到url。

页面加载完成后,我想分析加载页面的各个方面。

特别是我有兴趣看到在IHTMLStyle3接口上找到的属性’writingMode’。

就像是:

public void MyMethod(HtmlElement element) { IHTMLElement2 element2 = element.DomElement as IHTMLElement2; IHTMLStyle3 style3 = element2.currentStyle as IHTMLStyle3; string writingMode = style3.writingMode; ... 

问题是,style3值为null。 我认为这意味着IHTMLElement2.currentStyle不支持IHTMLStyle3。

我也试过尝试过铸造IHTMLELement.style。 但是,虽然它确实很快就像IHTMLStyle3一样,它似乎并没有包含样式,因为它已应用于Html元素。

查看文档,我认为您需要获取IHTMLElement2.currentStyle属性,因为常规style属性仅为内联样式。 这种差异在IHTMLElement2.currentStyle的备注中IHTMLElement2.currentStyle

当对象的样式未设置为内联时,IHTMLStyle和IHTMLCurrentStyle接口的属性返回的值会有所不同。 例如,如果网页的作者仅通过链接或嵌入的样式表将段落的颜色属性设置为红色,而不是内联,则IHTMLCurrentStyle :: color属性返回值red和IHTMLStyle :: get_color属性不返回值。 但是,如果作者指定了color属性的内联值,如下例所示,IHTMLCurrentStyle :: color和IHTMLStyle :: get_color属性都返回红色值。

currentStyle提供了一个IHTMLCurrentStyle接口,当查询IHTMLCurrentStyle2时, writingMode根据需要为您提供writingMode