从C#中获取JS中对象文字的属性

Getting the property of an object literal in JS from C#

本文关键字:文字 对象 属性 JS 获取      更新时间:2023-09-26

我目前正在尝试获取对象文字的属性值。我的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对象,但我完全不知道如何检查它来获取属性。有没有什么好的例子可以说明如何做我想做的事?

此语法不是有效的javascript,应该是:

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

然后,您应该能够从C#访问该属性,如下所示:

object nameOfVariable = script.GetType().InvokeMember("NameOfLiteral.nameOfVariable" ...);