получение IHTMLStyle3 из Dom HtmlElement в IE - PullRequest
3 голосов
/ 25 февраля 2009

У меня есть элемент управления System.Windows.Form.WebBrowser на форме. Я перемещаю этот объект браузера по URL.

Как только страница закончит загрузку, я хотел бы проанализировать различные аспекты загруженной страницы.

В частности, мне интересно видеть атрибут 'writingMode', который находится в интерфейсе IHTMLStyle3.

Что-то вроде:

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.

1 Ответ

1 голос
/ 25 февраля 2009

Глядя на документацию, я считаю, что вам нужно получить свойство IHTMLElement2.currentStyle, поскольку обычное свойство style является только встроенным стилем. Эта разница указана в примечаниях для IHTMLElement2.currentStyle:

Значения, возвращаемые свойствами IHTMLStyle и Интерфейсы IHTMLCurrentStyle отличаются когда стиль объекта не установлен в соответствии. Например, если автор веб-страница устанавливает свойство цвета абзац к красному только через связанная или встроенная таблица стилей, и не встроенный, то IHTMLCurrentStyle :: свойство color возвращает значение красного цвета, а Свойство IHTMLStyle :: get_color делает не вернуть значение. Однако если Автор указывает значение свойство цвета встроенное, как в В следующем примере оба IHTMLCurrentStyle :: цвет и IHTMLStyle :: get_color properties вернуть значение красного цвета.

currentStyle предоставляет интерфейс IHTMLCurrentStyle, который при запросе IHTMLCurrentStyle2 даст вам writingMode как вам требуется.

...