3

我在表单上有一个 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 的值为空。我认为这意味着 IHTMLElement2.currentStyle 不支持 IHTMLStyle3。

我也尝试过投射 IHTMLELement.style。但是,虽然它确实很高兴地转换为 IHTMLStyle3,但它似乎不包含样式,因为它已应用于 Html 元素。

4

1 回答 1

1

查看文档,我相信您需要获取该IHTMLElement2.currentStyle属性,因为常规style属性只是内联样式。这种差异在以下注释中指出IHTMLElement2.currentStyle

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

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

于 2009-02-25T18:42:18.773 回答