在 WebBrowser 控件的页面中注入脚本





5.00/5 (2投票s)
将脚本(JavaScript)注入到 WebBrowser 控件中加载的网页中。
引言
在本技巧中,我将展示将脚本(JavaScript)注入到 WebBrowser 控件中加载的网页中最简单的方法。
背景
基本上,这段代码的作用是调用全局 JavaScript eval()
函数,并将您想要调用的脚本作为参数传递给它。
eval()
函数评估或执行一个参数。如果参数是一个表达式,eval()
将评估该表达式。如果参数是一个或多个 JavaScript 语句,eval()
将执行这些语句。
Using the Code
下面,您可以查看一个注入脚本的方法实现
VB.NET
Public Sub InjectScript(Script As String)
WebBrowser1.Document.InvokeScript("eval", New Object() {Script})
End Sub
C#
public void InjectScript(string Script)
{
WebBrowser1.Document.InvokeScript("eval", new object[] { Script });
}
以及一个使用示例
System.Text.StringBuilder scriptBuilder = new System.Text.StringBuilder();
scriptBuilder.AppendLine("{");
scriptBuilder.AppendLine("var text = ""JavaScript injection test"";");
scriptBuilder.AppendLine("alert(text);");
scriptBuilder.Append("}");
string script = scriptBuilder.ToString();
InjectScript(script);
备注
如果作为参数传递给 InvokeScript
的脚本返回一个值,则该值将由 InvokeScript
返回,因为它是一个函数!
所以,您可以这样做
string script = "function() { return document.getElementById('Example').innerText; }";
string elementInnerText = (string)WebBrowser1.Document.InvokeScript("eval", new object[] { script });
注意:上面的代码只是为了说明这个概念。我没有进行测试。
原始源代码
这篇文章最初发布在我的个人博客(葡萄牙语)。但是,我认为用英语写一篇关于它的文章会很有趣。
但是,如果您会说葡萄牙语,请务必访问原始文章