1

現在、オブジェクト リテラルのプロパティの値を取得しようとしています。私の C# プログラムにはブラウザー コントロールがあり、次のようにしてグローバル変数の値を簡単に取得できます。

...
mshtml.IHTMLDocument domDoc = ((mshtml.IHTMLDocument2)_browser.Document.DomDocument)
object script = domDoc.Script;
object nameOfVariable = script.GetType().InvokeMember("nameOfVariable", BindingFlags.GetField | BindingFlags.GetProperty, null, script, null);
...

一方、JS の変数が実際にオブジェクト リテラルのプロパティである場合:

var NameOfLiteral = {
    var nameOfVariable: false // EDIT: no var as jbabey pointed out
};

前のコードを使用してリテラルを含む Com オブジェクトを取得できますが、それを検査してプロパティを取得する方法がまったくわかりません。私がやりたいことをする方法を示す良い例はどこかにありますか?

4

1 に答える 1

2

この構文は有効な JavaScript ではありません。次のようにする必要があります。

var NameOfLiteral = {
    nameOfVariable: false // no "var" on object properties
};

次に、次のように C# からそのプロパティにアクセスできるはずです。

object nameOfVariable = script.GetType().InvokeMember("NameOfLiteral.nameOfVariable" ...);
于 2012-07-09T13:35:10.633 に答える