我刚刚在iOS7中发现了一个新的框架:JavaScriptCore。
它看起来很棒,但是如何访问UIWebView
的运行时/上下文?
答案 0 :(得分:11)
这没有官方机制。但我知道有两种方法可以获得JSContext
。我可能不会在运送应用程序中使用它。
UIWebView
属性。在此博客文章中详细解释:http://blog.impathic.com/post/64171814244/true-javascript-uiwebview-integration-in-ios7 JSContext *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
答案 1 :(得分:2)
您可能希望在开发人员网站(https://developer.apple.com/wwdc/videos/)上查看WWDC 2013会话视频,特别是“将JavaScript集成到本机应用程序中”,以引用描述“引入新的Objective-C API”到JavaScriptCore
。iOS开发人员现在可以将脚本集成到他们的应用程序中,而无需捆绑自定义语言解释器。此API建立在Mac上可用的JavaScriptCore
的现有C API之上,并使用JavaScript进行编程更容易,更不容易出错。“
有一节与WebView
一起使用,例如使用:-webView:didCreateJavaScriptContext:forFrame:
答案 2 :(得分:0)
存在JavaScriptCore,以便开发人员可以使用Objective-C中的JavaScript运行时。我知道访问UIWebView运行时的唯一方法是通过stringByEvaluatingJavaScriptFromString:
方法,这显然不是很灵活。