Maison >développement back-end >C++ >Comment puis-je analyser et exécuter du code JavaScript dans une application C# ?

Comment puis-je analyser et exécuter du code JavaScript dans une application C# ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 20:01:121013parcourir

How Can I Parse and Execute JavaScript Code within a C# Application?

Pour analyser et exécuter JS en C#, vous pouvez utiliser l'extrait de code fourni. Il englobe les moteurs de script Windows et prend en charge les environnements 32 bits et 64 bits. Dans votre cas spécifique, vous devrez peut-être émuler/implémenter certains éléments HTML DOM (en utilisant la fonctionnalité « éléments nommés », avec la classe MyItem) en fonction du code .JS. C'est exactement ce que fait Internet Explorer.

Voici quelques exemples 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 option arguments :

using (ScriptEngine engine = new ScriptEngine("jscript"))
{
  ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x}");
  Console.WriteLine(parsed.CallMethod("MyFunc", 3));
}

Cela 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; }
}

Cela affichera 10.

Edit : J'ai ajouté la possibilité d'utiliser un CLSID au lieu d'un nom de langage de script, afin que nous puissions réutiliser le nouveau et rapide moteur javascript "chakra" IE9, comme ceci :

using (ScriptEngine engine = new ScriptEngine("{16d51579-a30b-4c8b-a276-0ff4dc41e755}"))
{
    // continue with chakra now
}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn