Um JS in C# zu analysieren und auszuführen, können Sie das bereitgestellte Code-Snippet verwenden. Es umschließt die Windows-Skript-Engines und unterstützt 32-Bit- und 64-Bit-Umgebungen. In Ihrem speziellen Fall müssen Sie je nach .JS-Code möglicherweise einige HTML-DOM-Elemente emulieren/implementieren (mithilfe der Funktion „Benannte Elemente“ mit der MyItem-Klasse). Genau das macht Internet Explorer.
Hier sind einige Beispiele dafür, was Sie damit machen können:
1) Auswertung direkter Ausdrücke:
Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));
zeigt 1,66666666666667 an
2) Funktionsaufruf, optional Argumente:
using (ScriptEngine engine = new ScriptEngine("jscript")) { ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x}"); Console.WriteLine(parsed.CallMethod("MyFunc", 3)); }
Hier wird 6 angezeigt.
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; } }
Hier wird 10 angezeigt.
Bearbeiten: Ich habe die Möglichkeit hinzugefügt, eine CLSID anstelle eines Skriptsprachennamens zu verwenden, damit wir das können Verwenden Sie die neue und schnelle IE9-Javascript-Engine „Chakra“ wie folgt wieder:
using (ScriptEngine engine = new ScriptEngine("{16d51579-a30b-4c8b-a276-0ff4dc41e755}")) { // continue with chakra now }
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!