ホームページ > バックエンド開発 > C++ > C# アプリケーション内で JavaScript コードを解析して実行するにはどうすればよいですか?

C# アプリケーション内で JavaScript コードを解析して実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-29 10:37:10
オリジナル
268 人が閲覧しました

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

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
}
ログイン後にコピー

完全版は次のとおりです。ソース:

(提供されたコードを参照)

使用法:

  1. 目的のスクリプト言語の ScriptEngine オブジェクトを作成します。
  2. Eval メソッドまたは Parse メソッドを使用してスクリプトを評価または解析しますtext.
  3. メソッドを呼び出すか、プロパティにアクセスするには、Parse によって返される ParsedScript オブジェクトを使用します。
  4. 名前付きアイテムを設定するには、ScriptEngine の SetNamedItem メソッドを使用します。

メモ:

  • ScriptEngine クラスは、Windows スクリプト エンジンのラッパーです。
  • ParsedScript クラスは、評価できる解析されたスクリプトを表します。
  • 名前付きアイテムを使用すると、オブジェクトをスクリプト エンジンに渡すことができます。

以上がC# アプリケーション内で JavaScript コードを解析して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート