繁体   English   中英

获取 WebBrowser 控件中 HtmlElement 的当前/计算样式

[英]Get current / computed style of an HtmlElement in WebBrowser control

我需要在 winform webrowser 中获取元素的当前计算样式。

获取元素: HtmlElement em = webBrowser1.Document.GetElementById("theIdOfElement");

现在获取我可以使用的样式: var style = em.Stylevar style = em.GetAttribute("style");

文档说样式属性“获取或设置当前元素的以分号分隔的样式列表。 ”所以结果应该类似于:“font-weight:bold”

但是我在第一种情况下得到的结果是“null”,其次是“System.__ComObject”据我所知,如果样式是 html,例如:

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

结果是“颜色:红色”,但是当 div 样式受 CSS 影响时,结果为空。

即使样式仅在 CSS 文件中,有没有办法获取 Htmlelemnt 的当前样式?

如果我无法获得当前样式,是否还有其他方法可以确定 htmlelement 是否可见?

style属性返回您明确分配给style

要获取计算样式,你可以使用currentStyle财产elementgetComputedStyle的方法window

以下代码获取a元素的计算background-color和计算color

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;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM