Получить текущий / вычисленный стиль HtmlElement в элементе управления WebBrowser - PullRequest
2 голосов
/ 11 февраля 2020

Мне нужно получить текущий вычисленный стиль элемента в веб-браузере winform.

получить элемент: HtmlElement em = webBrowser1.Document.GetElementById("theIdOfElement");

сейчас, чтобы получить стиль, который я могу использовать: var style = em.Style или var style = em.GetAttribute("style");

В документации сказано, что свойство стиля " Получает или задает список стилей, разделенных точкой с запятой для текущего элемента. ", поэтому результат должен выглядеть примерно так: "font-weight : bold "

Но результат, который я получаю в первом случае, равен" null ", а во втором -" System .__ ComObject ". Из того, что я понимаю, если стиль в html, например:

<div id ="myId" style="color:red" </div>

, чем результат "color: red", но когда на стиль div влияет CSS, результат будет нулевым.

Есть ли способ получить текущий стиль Htmlelemnt, даже если стиль находится только в файле CSS?

Если я не могу получить текущий стиль, есть ли другой способ определить, видим ли элемент htmlelement?

1 Ответ

1 голос
/ 11 февраля 2020

Свойство style возвращает значение, которое вы явно присвоили style.

Чтобы получить вычисленный стиль, вы можете использовать currentStyle свойство element или getComputedStyle метод window.

Следующий код вычисляется background-color и вычисляется color для элемента a:

webBrowser1.DocumentText = @"
<html>
    <head>
        <style>
            a {background-color:red;}
        </style>
        <title>Test</title>
    </head>
    <body>
        <a id='a1' href='#' style='color:yellow;'>Test</a>
    </body>
</html>";

webBrowser1.DocumentCompleted += (obj, arg) =>
{
    dynamic element = webBrowser1.Document.GetElementById("a1").DomElement;
    var style = element.currentStyle;

    // OR
    // dynamic window = webBrowser1.Document.Window.DomWindow;
    // var style = window.getComputedStyle(element, null);

    var backColor = style.backgroundColor;
    var color = style.color;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...