我正在使用 JavaScriptCore API 来获取 Javascript 的全局上下文。我希望能够在 C 中操纵从 Javascript 中返回的值。这是我拥有的相关代码示例:
JSGlobalContextRef jsContext = webkit_web_frame_get_global_context(webkit_web_view_get_main_frame(webView));
JSStringRef script = JSStringCreateWithUTF8CString("ReturnOne()");
JSValueRef val = JSEvaluateScript(jsContext, script, NULL, NULL, 0, NULL);
return JSValueToNumber(jsContext, val, NULL);
ReturnOne() 是一个 JavaScript 函数,如下所示:
function ReturnOne() {
return 1;
}
当我在函数中添加警报时,它会显示,因此我知道该函数被正确调用。我试图简单地打印出数字 1 但我得到了一个很大的负值。我没有正确解释 JSValueToNumber 吗?
任何意见,将不胜感激。谢谢。
编辑:我做了一些挖掘并找到了这个宝石 - https://lists.webkit.org/pipermail/webkit-help/2011-January/001849.html
不幸的是,我以这种方式实现我的 C 代码得到了相同的结果。我在 Javascript 中的函数返回一个原语,我想将该 Javascript 原语转换为我期望的值(在本例中为 1)。
我也可以选择从 Javascript 返回对象的替代方案,只要我能得到我期望的数值。