在 WebBrowser 控件中注入 CSS
Injecting CSS in 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;
我觉得你在努力做到这一点。
为什么不使用内置的 winforms 方式来代替 COM-Interop?
最简单的方法是简单地将 css 文件加载到内存中,并将其字符串附加到 Web 浏览器文档的 Style 元素中。或者,如果您只想更改一个特定元素,请使用 Style 属性
C#
using System.Windows.Forms;
namespace Whosebug
{
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 文档
我做了什么让它工作
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;
目前正在尝试使用 IHTMLStyleSheet
在 WebBrowser 控件中注入 CSSHow 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;
我觉得你在努力做到这一点。
为什么不使用内置的 winforms 方式来代替 COM-Interop?
最简单的方法是简单地将 css 文件加载到内存中,并将其字符串附加到 Web 浏览器文档的 Style 元素中。或者,如果您只想更改一个特定元素,请使用 Style 属性
C#
using System.Windows.Forms;
namespace Whosebug
{
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 文档我做了什么让它工作
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;