9

我刚刚在 iOS7 中发现了一个可用的新框架:JavaScriptCore。

它看起来很棒,但是我怎样才能访问 a 的运行时/上下文UIWebView

4

3 回答 3

11

对此没有官方机制。但是我知道有两种方法可以获得JSContext. 我可能不会在运输应用程序中使用任何一种。

  1. 使用 KVC 访问内部UIWebView属性。在这篇博文中有详细解释:http: //blog.impathic.com/post/64171814244/true-javascript-uiwebview-integration-in-ios7
JSContext *ctx = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
  1. 通过类别添加魔术方法。NSObject在这里进行更详细的解释:https ://github.com/TomSwift/UIWebView-TS_JavaScriptContext
@implementation NSObject (magic)
- (void) webView: (id) unused didCreateJavaScriptContext: (JSContext*) ctx forFrame: (id) frame
{
    // ...
}
@end
于 2013-11-22T23:20:46.703 回答
2

您可能想查看开发者网站 ( https://developer.apple.com/wwdc/videos/ ) 上的 WWDC 2013 会议视频,特别是引用描述“介绍一个新的 Objective-C API 到JavaScriptCore.iOS 开发人员现在可以将脚本集成到他们的应用程序中,而无需捆绑自定义语言解释器。该 API 构建在现有 C API 之上,JavaScriptCore可在 Mac 上使用,并且使使用 JavaScript 编程更容易,错误更少-易于。” 有一个关于使用它的部分,WebView例如使用:-webView:didCreateJavaScriptContext:forFrame:

于 2013-12-19T06:57:42.523 回答
0

JavaScriptCore 的存在使开发人员可以从 Objective-C 中使用 JavaScript 运行时。我知道访问 UIWebView 运行时的唯一方法是通过该stringByEvaluatingJavaScriptFromString:方法,这显然不是很灵活。

于 2013-10-29T16:55:17.137 回答