Heim >Backend-Entwicklung >C++ >Wie kann ich JavaScript-Code in einer C#-Anwendung analysieren und ausführen?

Wie kann ich JavaScript-Code in einer C#-Anwendung analysieren und ausführen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 10:37:10248Durchsuche

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

So analysieren und führen Sie JavaScript in C# aus

In diesem Codebeispiel umschließen wir die Windows-Skript-Engines, um 32-Bit und 64 zu unterstützen -Bit-Umgebungen.

Für Ihren speziellen Fall bedeutet dies, dass Sie dies je nach .JS-Code möglicherweise tun müssen Einige HTML-DOM-Elemente wie „Dokument“, „Fenster“ usw. emulieren/implementieren (mithilfe der Funktion „Benannte Elemente“ mit der MyItem-Klasse. Genau das macht Internet Explorer).

Hier sind einige Beispiel dafür, was Sie damit machen können:

1) Auswertung direkter Ausdrücke:

Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));

wird angezeigt 1.66666666666667

2) Funktionsaufruf mit optionalen Argumenten:

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

Anzeige 6

3) Funktionsaufruf mit benannten Elementen und optionalen Argumenten:

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

Wird angezeigt 10.

Bearbeiten: Wir haben die Möglichkeit hinzugefügt, eine CLSID anstelle eines Skriptsprachennamens zu verwenden, damit wir die neue und schnelle IE9-Javascript-Engine „Chakra“ wiederverwenden können dies:

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

Hier ist die vollständige Quelle:

(siehe bereitgestellt Code)

Verwendung:

  1. Erstellen Sie ein ScriptEngine-Objekt für die gewünschte Skriptsprache.
  2. Verwenden Sie die Methoden Eval oder Parse, um oder auszuwerten Skripttext analysieren.
  3. Um Methoden aufzurufen oder auf Eigenschaften zuzugreifen, verwenden Sie das von zurückgegebene ParsedScript-Objekt Analysieren.
  4. Um benannte Elemente festzulegen, verwenden Sie die SetNamedItem-Methode der ScriptEngine.

Hinweise:

  • Die ScriptEngine-Klasse ist ein Wrapper um die Windows Script Engines.
  • Die ParsedScript-Klasse repräsentiert ein analysiertes Skript die ausgewertet werden können.
  • Mit benannten Elementen können Sie Objekte an die Skript-Engine übergeben.

Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Code in einer C#-Anwendung analysieren und ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn