0

将 Awesomium .net 用于 Windows 窗体。

我的代码隐藏调用传递参数(JSValue)的java脚本函数。

JSValue[] args = new JSValue[args2.Length];

for (int i = 0; i < args2.Length; i++)
{
args[i] = args2[i].ToString();
}

JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window");
//args has all my 35 elements.
js_obj.Invoke("addTheseElements", args);

参考 http://docs.awesomium.net/html/M_Awesomium_Core_JSObject_Invoke.htm http://answers.awesomium.com/questions/784/calling-a-javascript-method-with-parameters.html

我的 HTML 页面

<script>

function addTheseElements(args) {

alert(args);
//returns element1

alert(args[0]);
//returns e

alert (args.length) 
//returns 8 (element1)

}

</script>

问题是我无法选择数组中的第二个元素。我如何访问它?我究竟做错了什么?

JSValue 的结构。 可用的属性和方法

4

2 回答 2

0

尝试改变这个:

args[i] = args2[i].ToString();

至:

args[i].push_back(args2[i].ToString());

在通过之前。

这样它就会变成:

JSValue[] args = new JSValue[args2.Length];

for (int i = 0; i < args2.Length; i++)
{
 args[i].push_back(args2[i].ToString());
}

JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window");

js_obj.Invoke("addTheseElements", args);
于 2013-11-11T02:38:16.600 回答
0

好的,我不确定这是否是正确的方法,但事实证明我需要传递的第二个参数是 JSValue 对象而不是 JSValue[]。

所以我的工作答案是

        JSValue[] args = new JSValue[args2.Length];

        for (int i = 0; i < args2.Length; i++)
        {
            args[i] = args2[i].ToString();

        }

        JSValue args3 = args;

        JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window");

        js_obj.Invoke("addTheseElements", args3);

但是文档中给出的语法是

public JSValue Invoke(
    string methodName,
    params JSValue[] args
)

参考http://docs.awesomium.net/html/M_Awesomium_Core_JSObject_Invoke.htm

如果有人发现这里发生了什么,请随时解释。

干杯。

于 2013-11-11T02:16:56.733 回答