C# で JavaScript を解析して実行する方法
このコード例では、32 ビットと 64 ビットをサポートするために Windows スクリプト エンジンをラップします。 -bit 環境。
特定のケースでは、.JS コードに応じて、 「ドキュメント」、「ウィンドウ」などの一部の HTML DOM 要素をエミュレート/実装する必要がある場合があります (MyItem クラスで「名前付きアイテム」機能を使用します。これはまさに Internet Explorer が行うことです)。
これでできることのサンプルをいくつか示します:
1) 直接的な表現評価:
Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));
は 1.66666666666667
2) オプションの引数付きの関数呼び出し:
using (ScriptEngine engine = new ScriptEngine("jscript")) { ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x}"); Console.WriteLine(parsed.CallMethod("MyFunc", 3)); }
は 6
を表示します3) 関数名前付きアイテムを使用した呼び出し、およびオプション引数:
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; } }
は 10 を表示します。
編集: スクリプト言語名の代わりに CLSID を使用する可能性を追加しました。次のように、新しくて高速な IE9 "chakra" JavaScript エンジンを使用します。
using (ScriptEngine engine = new ScriptEngine("{16d51579-a30b-4c8b-a276-0ff4dc41e755}")) { // continue with chakra now }
完全版は次のとおりです。ソース:
(提供されたコードを参照)
使用法:
メモ:
以上がC# アプリケーション内で JavaScript コードを解析して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。