我刚刚在 iOS7 中发现了一个可用的新框架:JavaScriptCore。
它看起来很棒,但是我怎样才能访问 a 的运行时/上下文UIWebView
?
我刚刚在 iOS7 中发现了一个可用的新框架:JavaScriptCore。
它看起来很棒,但是我怎样才能访问 a 的运行时/上下文UIWebView
?
对此没有官方机制。但是我知道有两种方法可以获得JSContext
. 我可能不会在运输应用程序中使用任何一种。
UIWebView
属性。在这篇博文中有详细解释:http: //blog.impathic.com/post/64171814244/true-javascript-uiwebview-integration-in-ios7JSContext *ctx = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
NSObject
在这里进行更详细的解释:https ://github.com/TomSwift/UIWebView-TS_JavaScriptContext@implementation NSObject (magic)
- (void) webView: (id) unused didCreateJavaScriptContext: (JSContext*) ctx forFrame: (id) frame
{
// ...
}
@end
您可能想查看开发者网站 ( https://developer.apple.com/wwdc/videos/ ) 上的 WWDC 2013 会议视频,特别是引用描述“介绍一个新的 Objective-C API 到JavaScriptCore
.iOS 开发人员现在可以将脚本集成到他们的应用程序中,而无需捆绑自定义语言解释器。该 API 构建在现有 C API 之上,JavaScriptCore
可在 Mac 上使用,并且使使用 JavaScript 编程更容易,错误更少-易于。” 有一个关于使用它的部分,WebView
例如使用:-webView:didCreateJavaScriptContext:forFrame:
JavaScriptCore 的存在使开发人员可以从 Objective-C 中使用 JavaScript 运行时。我知道访问 UIWebView 运行时的唯一方法是通过该stringByEvaluatingJavaScriptFromString:
方法,这显然不是很灵活。