2010-04-20 5 views
0

J'essaie d'utiliser la méthode InvokeScript sur le contrôle WebBrowser pour exécuter un script sur la page Web qui a été chargée dans mon contrôle WebBrowser. Si j'appelle juste une simple fonction javascript, cela fonctionne correctement. Cependant, la fonction javascript que je suis en train d'appeler est imbriqué dans une variable comme ceci:Cas particulier lors de l'appel d'InvokeScript avec le contrôle WebBrowser

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

Appel holder.DoA fonctionne très bien lorsqu'il est appelé à partir du javascript, mais la fonction est appelée avec succès lorsque je tente de appelez-le à partir de mon code C# comme ceci:

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

Des idées?

Répondre

0

Avez-vous essayé window.holder.DoA comme paramètre de InvokeScript?

+0

J'ai essayé et il ne fonctionne toujours pas: m_webBrowser.Document.InvokeScript (« window.holder.DoA ») ; – user321197

0

C'est une classe JSON singleton. Si holder est une variable globale, vous pouvez obtenir sa référence en appelant IHTMLDocument::Script.

Je ne suis pas sûr que Type.InvokeMember fonctionnerait sur un objet JSON depuis que les méthodes sont ajoutées à l'exécution, essayez l'interface de requête IDispatchEx à partir de l'objet pour appeler les méthodes.

2

J'ai eu le même problème et je l'ai eu à travailler comme ceci:

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