通过 invokeScriptAsync 在对象上调用方法

Call method on object via invokeScriptAsync

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

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

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

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

将您调用的函数名称用引号引起来,然后它将在 webview 的脚本上下文中得到解析:

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

简而言之,将 invokeScriptAsync 视为 eval。

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

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