2010-04-20 57 views
0

我想在WebBrowser控件上使用InvokeScript方法在已加载到我的WebBrowser控件的网页上执行脚本。如果我只是调用一个简单的JavaScript函数,这可以正常工作。但是,我想调用JavaScript函数嵌套在变量中是这样的:使用WebBrowser控件调用InvokeScript的特殊情况

var holder = 
{ 
    DoA: function() 
    { 
     .... 
    }, 
    DoB: function() 
    { 
     ..... 
    } 
} 

从调用的JavaScript中调用的时候,但是当我试图将功能未能成功调用holder.DoA工作正常从我的C#代码如下所示:

object obj1 = m_webBrowser.Document.InvokeScript("holder.DoA"); 

任何想法?

回答

0

您是否尝试过window.holder.DoA作为InvokeScript的参数?

+0

我想这和它仍然没有奏效: m_webBrowser.Document.InvokeScript(“window.holder.DoA”) ; – user321197 2010-04-20 12:15:08

0

这是一个单例JSON类。如果持有者是全局变量,则可以致电IHTMLDocument::Script以获取其参考。

我不确定Type.InvokeMember是否可以在JSON对象上工作,因为这些方法是在运行时添加的,请尝试从对象接口中调用方法来调用IDispatchEx接口。

2

我有同样的问题,我得到了它这样的工作:

m_webBrowser.Document.InvokeScript("eval", new object[] { "holder.DoA()" });