在WebBrowser控件中注入CSS

时间:2018-02-02 06:03:22

标签: c# html css webbrowser-control

目前正尝试使用IHTMLStyleSheet

在WebBrowser控件中注入CSS

How to inject CSS in WebBrowser control?

我读过这篇文章,我觉得它有点帮助,但对我来说似乎没什么用。

        IHTMLDocument2 doc = (webBrowser1.Document.DomDocument) as IHTMLDocument2;
        IHTMLStyleSheet ss = doc.createStyleSheet("", 0);                        
        ss.addRule("body", "background-color:#000");
        ss.cssText = @"h1 { color: blue; }";

这就是我目前所拥有的,在此之后我需要将它添加到控件中吗?或者我在这里做错了什么?

编辑: 在这里工作了我做的事情

            CurrentDocument = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
            styleSheet = CurrentDocument.createStyleSheet("", 0);

            StreamReader streamReader = new StreamReader(@"test.css"); //test.css is Stylesheet file
            string text = streamReader.ReadToEnd();
            streamReader.Close();
            styleSheet.cssText = text;

2 个答案:

答案 0 :(得分:2)

我做了什么才能让它发挥作用

        CurrentDocument = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
        styleSheet = CurrentDocument.createStyleSheet("", 0);

        StreamReader streamReader = new StreamReader(@"test.css"); //test.css is Stylesheet file
        string text = streamReader.ReadToEnd();
        streamReader.Close();
        styleSheet.cssText = text;

答案 1 :(得分:0)

我觉得你正在努力做到这一点。

为什么不使用内置的winforms方式代替COM-Interop?

最简单的方法是简单地将css文件加载到内存中,并将其附加到Web浏览器文档的Style元素中。或者,如果您只想更改一个特定元素,请使用Style属性

<强> C#

using System.Windows.Forms;
namespace stackoverflow
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.Navigate("http://www.google.com");
            webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
        }
        private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var FeelingLucky= webBrowser1.Document.GetElementById("gbqfbb");
            FeelingLucky.Style = "font-size: 40px;";

            var path = System.IO.Path.Combine(System.Environment.CurrentDirectory, "Stylesheet1.css");
            var StylesheetContent = System.IO.File.ReadAllText(path);
            var style= webBrowser1.Document.GetElementsByTagName("style")[0];
            style.InnerText = style.InnerText + " " + StylesheetContent;
        }
    }
}

CSS文件

#lga {background-color: red;}

以上修改后点击谷歌: Google

查看Style

上的MSDN文档