Bra*_*zol 9 .net javascript c# browser winforms
在我的WinForms应用程序中,我需要从我的WebBrowser控件调用javascript函数.我使用了Document.InvokeScript,它与单独的功能完美配合,例如
Document.InvokeScript("function").
Run Code Online (Sandbox Code Playgroud)
但是当我想调用javascript对象方法时,例如
Document.InvokeScript("obj.method")
Run Code Online (Sandbox Code Playgroud)
它不起作用.有没有办法让它发挥作用?或者解决这个问题的方法不同?不改变javascript代码中的任何内容!
提前致谢 :)
文档中的示例不包括括号.
private void InvokeScript()
{
if (webBrowser1.Document != null)
{
HtmlDocument doc = webBrowser1.Document;
String str = doc.InvokeScript("test").ToString() ;
Object jscriptObj = doc.InvokeScript("testJScriptObject");
Object domOb = doc.InvokeScript("testElement");
}
}
Run Code Online (Sandbox Code Playgroud)
尝试
Document.InvokeMethod("obj.method");
Run Code Online (Sandbox Code Playgroud)
请注意,如果使用HtmlDocument.InvokeScript方法(String,Object []),则可以传递参数.
看起来你不是唯一有这个问题的人:HtmlDocument.InvokeScript - 调用一个对象的方法.您可以像该链接的海报所示制作"代理功能".基本上你有一个调用你的对象功能的函数.它不是一个理想的解决方案,但它绝对有效.我会继续看看这是否可行.
关于同一问题的另一篇文章: 使用WebBrowser.Document.InvokeScript()搞乱外国JavaScript.C.Groß在CodeProject上提出的有趣解决方案:
private string sendJS(string JScript) {
object[] args = {JScript};
return webBrowser1.Document.InvokeScript("eval",args).ToString();
}
Run Code Online (Sandbox Code Playgroud)
您可以在HtmlDocument上创建一个扩展方法并调用它来运行您的函数,只使用这个新函数,您将包括括号,参数,传入的字符串中的整个九码(因为它只是传递给了一个eval) .
看起来HtmlDocument不支持在现有对象上调用方法.只有全球功能.:(
| 归档时间: |
|
| 查看次数: |
27071 次 |
| 最近记录: |