通过invokeScriptAsync调用对象的方法

时间:2015-01-08 17:00:40

标签: javascript winjs

我正在研究WinJS项目并尝试使用invokeScriptAsync在x-ms-webview上调用方法。它不起作用,我得到的错误没有帮助。我只得到一个“未知错误”。我之前从未遇到任何问题,这次唯一的区别是我调用的方法是任何对象的一部分而不是全局的javascript方法。我的电话看起来像这样:

webview.invokeScriptAsync("object.subobject1.subobject2.method", "arg1", "arg2", "arg3").start();

我唯一能想到的是该函数必须是全局函数,但我没有找到任何支持它的文档。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我能够在对象上调用方法的唯一方法是将eval传递给invokeScriptAsync方法:

webview.invokeScriptAsync("eval", "object.subobject1.subobject2.method('arg1', 'arg2', 'arg3');").start();

答案 1 :(得分:0)

invokeScriptAsync的第一个参数是一个字符串,它在webview中得到解析。你正在做的是尝试在应用程序的JavaScript内容中解析变量object.subobject1.subobject2.method,这可能是“未定义的”。因此要求webview执行undefined会给你一个模糊的错误。

用引号括起你正在调用的函数名,然后在webview的脚本上下文中解析它:

webview.invokeScriptAsync("object.subobject1.subobject2.method", "arg1", "arg2", "arg3").start();

简而言之,请考虑像eval那样的invokeScriptAsync。