0 votes

Cas spécial lors de l'appel d'InvokeScript avec un contrôle WebBrowser

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 une simple fonction javascript, cela fonctionne correctement. Cependant, la fonction javascript que j'essaie d'appeler est imbriquée dans une variable comme ceci :

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

L'appel de holder.DoA fonctionne bien lorsqu'il est effectué à partir du javascript, mais la fonction n'est pas appelée avec succès lorsque j'essaie de l'appeler à partir de mon code C#, comme ceci :

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

Des idées ?

2voto

J'avais le même problème et j'ai réussi à le faire fonctionner comme ceci :

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

0voto

Timores Points 9916

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

0voto

Sheng Jiang 蒋晟 Points 11113

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 puisque les méthodes sont ajoutées au moment de l'exécution, essayez la requête IDispatchEx de l'objet pour appeler les méthodes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X