如何使用 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");
结果:
在我的应用程序中,我需要使用 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");
结果: