Javascript 将jQuery注入WPF应用程序中的WebBrowser控件
我有一个很简单的问题。任务是在WPF应用程序中仅显示加载在Javascript 将jQuery注入WPF应用程序中的WebBrowser控件,javascript,c#,jquery,wpf,webbrowser-control,Javascript,C#,Jquery,Wpf,Webbrowser Control,我有一个很简单的问题。任务是在WPF应用程序中仅显示加载在WebBrowser控件中的部分网页。我查了一下堆栈上的问题,但没有一个解决方案对我有帮助,也没有解决问题。所以我学到的是,解决这个问题的最简单方法是将javascript/jquery函数注入加载页面的头部,然后使用WebBrowser.InvokeScript调用它来进行DOM操作,但每当我调用我的函数时,就会出现脚本错误 以下是我尝试过的函数,但都不起作用(我对jQuery或javascript一无所知,所以我真的不知道如何解决这个
WebBrowser
控件中的部分网页。我查了一下堆栈上的问题,但没有一个解决方案对我有帮助,也没有解决问题。所以我学到的是,解决这个问题的最简单方法是将javascript/jquery函数注入加载页面的头部,然后使用WebBrowser.InvokeScript
调用它来进行DOM操作,但每当我调用我的函数时,就会出现脚本错误
以下是我尝试过的函数,但都不起作用(我对jQuery或javascript一无所知,所以我真的不知道如何解决这个问题):
我在堆栈上找到的这个(第二个答案)
我阅读了prepend
和prependTo
上的jQuery文档,从中学到我尝试了:(这里我只是尝试让脚本不抛出错误)
简单的警报
工作正常。下面是我用来注入脚本的代码:
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");
}
你有什么错误。。。你真的有一个
$是未定义的或类似的东西吗?。。。您正在将哪个url加载到web浏览器控件。。。你拥有那个网站的来源吗?尝试alert($('body').prepend)
只是为了检查您是否获得函数
或[object]
…我在加载facebook登录页面时没有网站源代码。当我尝试alert($('body').prepend)
时,仍然会出现错误:error:Script error,code:0,URL:,然后它会显示COMException,但无法真正读取有用的内容。代码错误也为0,因此我甚至无法通过其代码搜索错误:/
function _changeDivs() {
$('body').prepend($('#dex1'));
}
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");
}
webBrowser.LoadCompleted += PageLoaded;