【发布时间】:2013-06-05 11:49:14
【问题描述】:
为了传递变量,我们使用UIWebView'方法stringByEvaluatingJavaScriptFromString:
我怎样才能传递一个对象?
【问题讨论】:
标签: javascript objective-c cocoa-touch uiwebview
为了传递变量,我们使用UIWebView'方法stringByEvaluatingJavaScriptFromString:
我怎样才能传递一个对象?
【问题讨论】:
标签: javascript objective-c cocoa-touch uiwebview
为了将对象从 Obj-C 传递给 JS,您别无选择,只能对其进行序列化和反序列化。最合适的数据格式自然是 JSON。本教程将为您提供帮助:http://www.raywenderlich.com/5492/working-with-json-in-ios-5
根据您的问题,我了解到您不仅想与 JavaScript 交谈,还想与 UIWebView 内的 JavaScript 上下文交谈。遗憾的是,您无法像在 Mac 上的 Cocoa 中访问它那样直接访问 UIWebView 的 JSContext 对象。但是,如果您只是想在不使用 UIWebView 的情况下从 Obj-C 桥接到 JavaScript,您可以通过在您的应用程序中提供您自己的 JavaScriptCore 版本来实现。如果你这样做,你可以在两个世界之间来回移动 Obj-C 和 JS 对象。这是一个演示项目:https://github.com/jfahrenkrug/AddressBookSpy/blob/master/AddressBookSpy/AddressBookSpy/ABSEngine.m
【讨论】:
我 fork phoboslab's repo 并将其更新到 WebKit 的最新版本(截至上周五)。它与 iOS 5 和 6 兼容,并包含将在 iOS 7 中提供的 Objective-C 到 Javascript 的桥梁(不使用私有框架或函数)。
你可以在 GitHub 上找到 repo: https://github.com/darionco/JavaScriptCore-iOS
为方便起见,我还在包含库 (.a) 和所需头文件的存储库中添加了一个 ZIP 文件。
您可以在此处找到有关如何使用桥接器传递对象的教程: http://www.steamclock.com/blog/2013/05/apple-objective-c-javascript-bridge/
干杯!
【讨论】: