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
Libérer: 2024-12-27 20:01:12
original
1013 Les gens l'ont consulté

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"));
Copier après la connexion

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));
}
Copier après la connexion

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; }
}
Copier après la connexion

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
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal