JavaScriptをC#から呼び出すことはできますか?C#からC#4.0の動的関数を使用してjavascriptを呼び出す動的機能
ScriptRuntime py = Python.CreateRuntime();
dynamic random = py.UseFile("cal.js");
var result =random.Add(1,2);
cal.js
function Add(a, b) {
return (a + b);
}
JavaScriptをC#から呼び出すことはできますか?C#からC#4.0の動的関数を使用してjavascriptを呼び出す動的機能
ScriptRuntime py = Python.CreateRuntime();
dynamic random = py.UseFile("cal.js");
var result =random.Add(1,2);
cal.js
function Add(a, b) {
return (a + b);
}
はい、限り、あなたはwebrowserコントロールのJSをホストとして。 ObjectForScriptingプロパティとdocumentプロパティをcom可視オブジェクトと共に使用することができます。実際には逆のことも当てはまります。つまり、JavaScriptからC#メソッドを呼び出すことができます。動的な型を使用すると、複雑なオブジェクトをリフレクションInvoke/GetPropertyなどを使用することなく渡すことができます。
ここは本当に簡単な例です。
[ComVisibleAttribute(true)]
public class Ofs
{
public void MethodA(string msg)
{
MessageBox.Show(msg); // hello from js!
}
}
public class Form1
{
void Form1()
{
WebBrowser b = new WebBrowser();
b.DocumentText = "<script>"
+ "var a = [];"
+ "a.foo = 'bar!'";
+ "var jsFunc=function(y){alert(y);}"
+ "var jsFunc2=function(){return a;}"
+ "window.external.MethodA('hello from js!');</script>";
b.ObjectForScripting = new Ofs(); // we can call any public method in Ofs from js now...
b.Document.InvokeScript("jsFunc", new string[] { "hello!" }); // we can call the js function
dynamic a = (dynamic)b.Document.InvokeScript("jsFunc2"); // c#'a' is js'a'
string x = a.foo;
MessageBox.Show(x); // bar!
}
}
はい、C#からではなく、動的型を使用して、JavaScriptコードを呼び出すことが可能です。
代わりに、JScript.Netの評価機能を活用することができます。
次の資料ではこれを行うための基礎を持っている:
リンクありがとうございましたが、私の質問です:あなたはLinkeのIronPythonまたはIronRubyのC#からjavascriptを呼び出すことは可能ですか? –
Chibacityによると、現在のJScriptエンジンではdynamicキーワードを使用できないため、新しい構文の恩恵を受けることはありません。ただし、evalを使用してJavaScriptコードを呼び出すことはできます。 – JasonTrue
@サンクトあなたの質問に対する答えは:いいえ、私はC#のJavaScriptとの相互運用性を達成するための代替手段を提供しました。 –