MSWebViewJavaScriptBridge
对 UIWebView 的接口进行扩展,开题报告,让 UIWebView 和 JavaScript 可以方便地进行交互。类似 http 请求的交互方式。
与著名的 相比:
优点:
前台不需要依赖额外的第三方库,可以方便的适配 iOS 和 Android
是 UIWebView 的分类,而且对 UIWebView 的其他功能没有任何侵入,所以使用起来更加简单
缺点:
需要指定回调方法的名称
目前只支持 UIWebView
填了几个坑:
在主队列中调用 JS 的方法弹窗会出现无响应的问题
在 block 中使用 JSContext 导致循环引用的问题
在网页没有加载完成之前 JS 调用 OC 方法的问题
网页切换之后 JSContext 变化需要重新注册方法的问题
系统要求iOS7 及以上。
Automatic Reference Counting(ARC)
安装CocoaPods在 Podfile 中添加 pod 'MSWebViewJavaScriptBridge'。
执行 pod install 或 pod update。
导入头文件:#import <UIWebView+MSJavaScriptBridge.h>。
手动安装下载 MSWebViewJavaScriptBridge 项目。
将 MSWebViewJavaScriptBridge 文件夹中的源文件拽入项目中。
导入头文件:#import 'UIWebView+MSJavaScriptBridge.h'。
使用JS 调用 OC 方法// 默认回调 JS 那边的 payCallback 方法 [webView ms_registerHandler:@'pay' handler:^(NSString *data, MSJSBCallback callback) { callback(data); }]; // 指定回调 JS 那边 payResult 方法 [webView ms_registerHandler:@'pay' callbackName:@'payResult' handler:^(NSDictionary *data, MSJSBCallback callback) { callback(data); }];OC 调用 JS 的方法// 调用 JS 那边的 jsHandler 方法 [webView ms_callHandler:@'jsHanlder']; // 调用 JS 那边的 jsHandler 方法,需要传递参数 [webView ms_callHandler:@'jsHanlder' data:data]; // 调用 JS 那边的 jsHandler 方法,论文,JS 默认回调 jsHandlerCallback 方法 [webView ms_callHandler:@'jsHanlder' data:nil callback:^(id responseData) { NSLog(@'%@', responseData); }]; // 调用 JS 那边的 jsHandler 方法,JS 指定回调 xxxx 方法 [webView ms_callHandler:@'jsHanlder' data:nil callbackName:@'xxxx' callback:^(id responseData) { NSLog(@'%@', responseData); }];github 地址: