如何使用 WebBrowser 控件将 Javascript 脚本注入网页?

How to inject a Javascript script into webpage using WebBrowser control?

在我的应用程序中,我需要使用 WebBrowser 控件来处理用户登录。我使用 WPF,它是 WebBrowser 控件。问题是我想显示某个div下的网页的一部分。我找到了一个解决方案,我需要将 javascript 脚本注入加载的 html 页面,但我不知道该怎么做 :(

这是我要注入网络的脚本。

function showHide() { 
     $('body >').hide(); 
     $('#div').show().prependTo('body'); 
}

所以我以后可以称它为webbrowser1.InvokeScript("showHide");

我在堆栈上阅读了很多帖子,但它们都提到了 WindowsForms WebBrowser 并且它不适用于 WPF 之一。

编辑:我试过:

private void PageLoaded (object sender, NavigationEventArgs e)
{
    var webBrowser = sender as WebBrowser;

    webBrowser.Document.InvokeScript("execScript",
            new object[] {"$('body >').hide(); $('#" + _div + "').show().prependTo('body');"});

} 

但是 webBrowser.Document 是类型对象,我无法对其调用 InvokeScript,不知道我应该如何转换它。

感谢您的帮助。

添加对 mshtml

的引用

无论你想注入什么事件 JavaScript:

var doc = (mshtml.HTMLDocument)webBrowser1.Document;
var head = doc.getElementsByTagName("head").Cast<mshtml.HTMLHeadElement>().First();
var script = (mshtml.IHTMLScriptElement)doc.createElement("script");
script.text = "function myFunction() { alert(\"Hello!\");}";
head.appendChild((mshtml.IHTMLDOMNode)script);

在任何情况下你想调用 JavaScript 来自:

webBrowser1.InvokeScript("myFunction");

结果: