2017-04-12 112 views
0

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

这是我想注入到网络的脚本

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

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

我读了很多关于栈的职位,但他们都指WindowsForms web浏览器,它不与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,不知道我应该投它。

感谢您的帮助。

+1

的[如何在WebBrowser控件注入Javascript脚本](http://stackoverflow.com/questions/7998996/how-to-inject-javascript-in-webbrowser-control) – Equalsk

+0

这是可能的复制不使用WPF控件,因此它不会重复... – vip1all

+0

您是否尝试过任何操作?看来你已经把0的努力投入到你的问题中,并且努力使用答案。虽然它需要稍微改变,但这与WPF WebBrowser一起工作很好,并且是重复的... – Equalsk

回答

1

mshtml

enter image description here

添加引用在要注入的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"); 

结果:

enter image description here

相关问题