访问UIWebView的JavaScriptCore引擎
我刚刚在iOS7中发现了一个新的框架:JavaScriptCore。
它看起来很棒,但我怎样才能访问UIWebView
的运行时/上下文?
这没有官方的机制。 但是我知道有两种方法可以获得JSContext
。 我可能不会在运输应用程序中使用。
- 使用KVC来访问内部的
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
您可能会喜欢在开发者网站( https://developer.apple.com/wwdc/videos/ )上查看WWDC 2013会话video,特别是“将JavaScript集成到原生应用程序中”,其中引用了“引入为JavaScriptCore
了一个新的Objective-C API,iOS开发人员现在可以将脚本集成到他们的应用程序中,而无需绑定定制的语言解释器,这个APIbuild立在Mac上现有的C API to JavaScriptCore
基础之上,不太容易出错“。 有一个与WebView
使用它的部分,例如使用: -webView:didCreateJavaScriptContext:forFrame:
存在JavaScriptCore,以便开发人员可以从Objective-C中使用JavaScript运行时。 我知道访问UIWebView运行时的唯一方法是通过stringByEvaluatingJavaScriptFromString:
方法,这显然不是很灵活。
- 如何将iOS徽章通知颜色从默认红色更改为其他颜色?
- 应用程序只启用肖像,但UIImagePickerController在iOS6中旋转
- 如何从UISearchBarDisplayController结果inheritance到detailViewController
- configuration应用程序时发生Firebase错误 – 无法识别的select器已发送到课程
- 在iPhone OS 4.0中以编程方式获取自己的电话号码
- 我如何定制我的UICollectionViewCell子类的select状态?
- iOS呈现视图控制器animation为“推”(左右animation)
- Objective-C instantiateViewControllerWithIdentifier返回nil
- 导航栏中的button不会出现,因为我创buildCustomNavigationBar