Comment analyser et exécuter JS en C#
Le code C# fourni comprend une classe, ScriptEngine, qui sert de wrapper autour de Windows Composants COM du moteur de script. Il facilite les environnements 32 bits et 64 bits et vous permet d'analyser et d'exécuter du code JavaScript.
L'exemple de code propose différentes manières d'interagir avec le moteur de script :
Direct évaluation de l'expression :
Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));
Ceci évalue l'expression JavaScript donnée et imprime le résultat (1.66666666666667).
Appel de fonction, avec des arguments facultatifs :
using (ScriptEngine engine = new ScriptEngine("jscript")) { ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x}"); Console.WriteLine(parsed.CallMethod("MyFunc", 3)); }
Ceci définit une fonction JavaScript, l'analyse et appelle la fonction avec l'argument 3, impression du résultat (6).
Appel de fonction avec éléments nommés, et facultatif arguments :
using (ScriptEngine engine = new ScriptEngine("jscript")) { ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x+My.Num}"); MyItem item = new MyItem(); item.Num = 4; engine.SetNamedItem("My", item); Console.WriteLine(parsed.CallMethod("MyFunc", 3)); } [ComVisible(true)] // Script engines are COM components. public class MyItem { public int Num { get; set; } }
Cet exemple démontre l'utilisation d'éléments nommés, qui permettent d'émuler/implémenter des éléments HTML DOM. Il définit un élément nommé "My" avec une propriété "Num" définie sur 4 et appelle la fonction avec l'argument 3, imprimant le résultat (10).
L'exemple montre également comment utiliser un CLSID à la place. d'un nom de langage de script pour profiter du moteur JavaScript rapide "chakra" d'IE9 :
using (ScriptEngine engine = new ScriptEngine("{16d51579-a30b-4c8b-a276-0ff4dc41e755}")) { // continue with chakra now }
Le code source complet de la classe ScriptEngine et des exemples d'utilisation sont fournis pour référence. Il comprend des fonctionnalités supplémentaires telles que :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!