【发布时间】:2014-06-22 20:56:59
【问题描述】:
我正在尝试在 Javascript 中从 C# 访问数组。
这是 JavaScript 代码:
var testArray = window.external.testfunction();
for(var i = 0; i < testArray.length; i++) {
alert(testArray[i]);
}
我使用分配给 ObjectForScripting 属性的以下 C# 对象对其进行了测试:
[ComVisible(true)]
public class TestObject
{
public string[] testfunction()
{
var test = new string[1];
test[0] = "test";
return test;
}
}
在尝试访问 testArray.length 时,它会引发 JavaScript 错误,提示“预期功能”。
那么如何将数组返回给 JavaScript 代码呢?
JavaScript 代码已修复(我无法修改)。因此,该函数将使用 window.external.testfunction() 调用,并且 JavaScript 代码需要一个数组作为返回值。
我怎样才能从 C# 端实现这一点?
最好的问候,并感谢您对此提出任何想法
安德烈亚斯
【问题讨论】:
-
最简单的方法是使用
Get/Set/Length方法将您的 C# 数组包装到一个单独的对象中,然后将其返回给 JavaScript。这可能会给你一些想法:stackoverflow.com/a/20943173/1768303 -
你好 Noseratio,我认为这行不通,因为 JavaScript 可能无法使用
testArray[i]访问数组元素,是吗?正如我所写的,我无法更改 JavaScript 代码本身,我只能使用 C# 代码。但是真的没有办法将数组作为函数的返回值传递给 JavaScript 吗? -
如果你不能修改JavaScript,你将如何访问
window.external?无论如何,您总是可以注入一些新的 JavaScript,在我的回答末尾检查更新。 -
只是为了回答你的问题,为什么在 JS 代码中已经可以访问
window.external虽然我无法修改它:这个 JS 代码在一个更大的项目中,它已经通过这个使用了一些外部数据window.external接口。我现在只需要模拟或模拟这个接口,以便从 C# 端进行测试。这就是为什么我不能修改JS代码的原因,但是window.external已经到位,也不能更改。
标签: c# javascript webbrowser-control window.external