C#プログラムでJavascriptをホストしたいと思います。ユーザーがカスタムJavaScriptコードを作成し、C#プログラムでその関数を実行させ、ユーザーが自分のフレームワークコードを使用できるようにしたいと考えています。C#とJavascriptを相互運用するにはどうすればよいですか?
これは可能ですか?もしそうなら、どうですか?
編集:私はではありません。このプロジェクトにはASP.NETを使用しています。
C#プログラムでJavascriptをホストしたいと思います。ユーザーがカスタムJavaScriptコードを作成し、C#プログラムでその関数を実行させ、ユーザーが自分のフレームワークコードを使用できるようにしたいと考えています。C#とJavascriptを相互運用するにはどうすればよいですか?
これは可能ですか?もしそうなら、どうですか?
編集:私はではありません。このプロジェクトにはASP.NETを使用しています。
また、Webブラウザコントロールを使用して、HTMLドキュメント内でjavascriptをホストし、COM可視クラスを作成し、そのインスタンスをObjectForScriptingプロパティに設定する2つの間で対話できます。
「外部」クラスのパブリックメンバーは、javascriptのwindow.externalからアクセスできるようになりました。また、マネージコード側から、ドキュメントのInvokeScriptメソッドを使用して、任意のjavascript関数を呼び出すことができます。
このように、2つのオブジェクト間で複雑なオブジェクトを渡すのは簡単です。
私はこのアイデアをこのGoogle Earthアプリケーションでかなり使いました。 http://fraserchapman.blogspot.com/2008/08/google-earth-plug-in-and-c.html
ああ、優秀!私の以前のグーグルでは、ウェブブラウザーコントロールアプローチを提案している人が見つかりましたが、説明は提供されませんでした。ありがとう=) –
また、この例をチェックすると、実行時にJavaScriptを注入する機能を含む、もっと複雑なやりとりを見ることができます。ソースのIHTMLScriptElement.csを参照してください。 http://code.google.com/p/winforms-geplugin-control-library/ - Fraser – Fraser
Spidermonkey .NETおそらくあなたが探しているものでしょうか。
私はそれがどのように発展したのか分かりません。 butsは基本的に私がたくさん好むMozilla's Spidermonkey Javascriptパーサーエンジンのポートです。あなたはそれをdirectly
を評価することができます
それともあなたは確かにC#のからネイティブJavascriptを実行することができます - スタータ用this articleを参照してください。 Javascriptにあなたのフレームワークをアクセスさせることは、やっかいかもしれません。おそらくScript#がお手伝いできますか?
スクリプト#はJSを書くのに役立ちますが、JSから.NETコードを呼び出すのに役立つとは思いません。 – bdd
JavaScriptを埋め込むことができるHTMLコンポーネントがあります。他の方法では、適切なことはASP.NET Webサービスです。おそらくスマートなクライアントでは、両方を組み合わせることができます。
Microsoft Dynamic Langauage Runtime (DLR)をお勧めします。人生の目的は.Net環境でのスクリプト作成を容易にすることです。 DLRはスクリプト特有のものではないので、時間の経過とともにより多くのスクリプト言語が構築されますが、私が知っているものはIronRuby、IronPython、JScriptです。
私はこのルートに行くかもしれませんが、私は言語としてJavaScriptが好きです。 JavaScriptのDLR実装があれば本当にうれしいですが、今まで私はその空間で何も見ていませんでした。 –
以前は、Microsoft.Scriptingライブラリの初期サンプルにはJScriptサンプルが含まれていました。私はそれがもはや維持されていないことを読んだ。 – sipwiz
はい、DLRとタイプダイナミックを使用しますが、ブラウザコントロールでJSを最初にホストし、COM可視クラスを作成する必要があります。一旦それが行われると、DLRはドット構文などを使用することができ、リフレクションと呼び出しで心配する必要がないので、interopを簡単にします。しかし、DLRはJSを実行しません。はるかに簡単にそれをIOにするだけです。 – Fraser
これを行う方法は、JScriptまたはVBScriptのいずれかをホストすることを許可したWindowsスクリプトホストでした。
これはWebページからのものでも、winformからのものでもかまいませんか? – RossFabricant
理想的には、インターフェイスに関係なく動作するはずです... –
[この質問を見る](http://stackoverflow.com/questions/268320/execute-a-javascript-function-in-a-c-application) –