Maison >développement back-end >C++ >Comment analyser et exécuter du code JavaScript dans une application C# ?
Comment analyser et exécuter du JavaScript en C#
Dans cet exemple de code, nous encapsulons les moteurs de script Windows pour prendre en charge les versions 32 bits et 64 bits. -bit environnements.
Pour votre cas spécifique, cela signifie qu'en fonction du code .JS, vous devrez peut-être émuler/implémenter certains éléments HTML DOM tels que « document », « fenêtre », etc. (en utilisant la fonctionnalité « éléments nommés », avec la classe MyItem. C'est exactement ce que fait Internet Explorer).
En voici quelques-uns échantillon de ce que vous pouvez faire avec :
1) Évaluation des expressions directes :
Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));
affichera 1.66666666666667
2) 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)); }
Affichera 6
3) Appel de fonction avec des éléments nommés et des arguments facultatifs :
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; } }
Affichera 10.
Modifier : Nous avons ajouté la possibilité d'utiliser un CLSID au lieu d'un nom de langage de script, afin de pouvoir réutiliser le nouveau et rapide moteur javascript "chakra" d'IE9, comme ceci :
using (ScriptEngine engine = new ScriptEngine("{16d51579-a30b-4c8b-a276-0ff4dc41e755}")) { // continue with chakra now }
Voici la source complète :
(voir fourni code)
Utilisation :
Remarques :
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!