我有点简单的问题。任务是在WPF应用程序中仅显示WebBrowser
控件中加载的网页的一部分。我在堆栈上查找了问题,但解决方案都没有帮助我,也没有解决问题。所以我学到的是,最简单的解决方法是将javascript / jquery函数注入到加载页面的头部,然后使用WebBrowser.InvokeScript
调用它来进行DOM操作,但每当我调用我的函数时,我得到脚本错误。
以下是我尝试过的功能,但没有一个功能(我对jQuery或javascript一无所知,所以我不知道如何处理这个问题):
我在堆栈上找到的这个(第二个回答here)
function _changeDivs() {
$('body >').hide();
$('#dex1').show().prependTo('body');
}
我在prepend
和prependTo
上阅读了jQuery文档,并从我学到的内容中读到了:(这里我只是试图让脚本不会抛出错误)
function _changeDivs() {
$('body').prepend($('#dex1'));
}
简单alert
无问题。这是我用来注入脚本的代码:
private void PageLoaded(object sender, NavigationEventArgs e)
{
var webBrowser = (WebBrowser) sender;
var doc = (mshtml.HTMLDocument)webBrowser.Document;
var head = doc.getElementsByTagName("head").Cast<mshtml.HTMLHeadElement>().First();
var script = (mshtml.IHTMLScriptElement)doc.createElement("script");
script.text = "function _changeDivs() { $('body >').hide(); $('#dex1').show().prependTo('body'); }";
head.appendChild((mshtml.IHTMLDOMNode)script);
webBrowser.InvokeScript("_changeDivs");
}
如果您想知道何时调用PageLoaded:
webBrowser.LoadCompleted += PageLoaded;