有一个使用WebBrowser控件(.NET 4)的Windows窗体应用程序加载与该应用程序通信的网页.我曾调用InvokeScript()来在网页中调用Javascript例程.
现在事情已经“更新”了,现在正在使用jQuery.因此,不是要调用OnVenueSelected()函数,而是现在有些$.city.venue.onVenueSelected:function(param)oddity.
简单地将我的调用从InvokeScript(“OnVenueSelected”,新对象[] {params})更改为InvokeScript(“$.city.venue.onVenueSelected”,新对象[] {params})不起作用.我没有得到任何可观察的错误或异常,但是没有调用调用中的逻辑.
一些挖掘让我尝试使用eval作为调用并将函数名称和参数作为字符串传递给eval.那也行不通.
有没有一种已知的方法来调用嵌入在几层jQuery魔法中的函数?
谢谢.
解决方法
好的 – 我可以回答我自己的问题.部分谢谢你在
How to call a jQuery function from .NET WebBrowser control using InvokeScript()?的答案,我能够改变我对jQuery函数的调用
string[] codeString = { String.Format(" {0}('{1}') ",@"$.city.venue.onVenueSelected",result.ToString()) }; this.myBrowser.Document.InvokeScript("eval",codeString);
令人惊讶的是,这似乎有效.
在我的例子中,结果变量是bool类型(如果对任何人都很重要).