当我在 CEFSharp 中使用 执行 js 时EvaluateScriptAsync(),我可以返回原始类型,如字符串或数组。例如,以下作品:
var result = await Browser.EvaluateScriptAsync("Array.from(document.getElementsByTagName('input')).map(element => element.value)");
if (result.Success && result.Result != null)
{
dynamic values = result.Result;
foreach (dynamic value in values)
{
MessageBox.Show($"Value is: {value}");
}
}
但是一旦我尝试获取一个 DOM 元素,无论是一个元素还是列表元素,我都会得到null:
var result = await Browser.EvaluateScriptAsync("Array.from(document.getElementsByTagName('input'))");
// `result.Success` is `true`, `result.Result` is `null`
我认为 CEFSharp 只知道如何编组原始类型,但对象文字也可以工作:
var result = await Browser.EvaluateScriptAsync("({ a: 1, b: 'hello' })");
if (result.Success && result.Result != null)
{
dynamic obj = result.Result;
MessageBox.Show($"{{ a: {obj.a}, b: {obj.b} }}");
}
所以事实证明,CEFSharp 只是不知道如何编组 DOM 对象。
为什么?那里有解决方案或解决方法吗?
斯蒂芬大帝
慕哥6287543
相关分类