在我的应用程序中,我需要使用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,也不知道我应该投射它。
感谢您的帮助。
答案 0 :(得分:1)
添加对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");
结果: