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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 10:37:10248parcourir

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

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 :

  1. Créez un objet ScriptEngine pour le langage de script souhaité.
  2. Utilisez les méthodes Eval ou Parse pour évaluer ou analyser le texte du script.
  3. Pour appeler des méthodes ou accéder aux propriétés, utilisez l'objet ParsedScript renvoyé par Parse.
  4. Pour définir des éléments nommés, utilisez la méthode SetNamedItem de ScriptEngine.

Remarques :

  • La classe ScriptEngine est un wrapper autour des moteurs de script Windows.
  • La classe ParsedScript représente un script analysé qui peut être évalué.
  • Les éléments nommés vous permettent de transmettre des objets au moteur de script.

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