iOS和JS之间的交互
2016-03-07 15:26
381 查看
iOS调用JS的方法:
//js方法名+参数
NSString* jsCode = [NSString stringWithFormat:@"initCarLicenseInfo('%@')",object];
//调用html页面的js方法
[webView stringByEvaluatingJavaScriptFromString:jsCode];
JS调用iOS的方法:
这里iOS通过拦截H5触发的alert来实现调用,H5触发一个alert弹窗,将要调用的iOS方法名作为弹窗内容,iOS这边通过以下方法拦截这个弹窗,获取到方法名称,然后实现调用
@interface UIWebView (JavaScriptAlert)
- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(CGRect *)frame;
@end
只要将以上类别导入到iOS工程中去就OK了,方法的实现是app工具自己的情况去实现,例如这里我拦截到kShowTakePhotoButton和kHideTakePhotoButton的时候分别抛出通知调用相应的方法,并且没有弹框,其他时候正常弹框;
实现类似微信里面浏览H5:
加载H5的并使用原生导航栏的时候,我们通过webView.canGoBack来判断是否是返回到最后一级页面,如果不是最后一级,添加关闭按钮(实现导航控制器pop),而返回按钮实现[webView
goBack];方法来实现返回上一级页面,否则导航控制器pop;
//js方法名+参数
NSString* jsCode = [NSString stringWithFormat:@"initCarLicenseInfo('%@')",object];
//调用html页面的js方法
[webView stringByEvaluatingJavaScriptFromString:jsCode];
JS调用iOS的方法:
这里iOS通过拦截H5触发的alert来实现调用,H5触发一个alert弹窗,将要调用的iOS方法名作为弹窗内容,iOS这边通过以下方法拦截这个弹窗,获取到方法名称,然后实现调用
@interface UIWebView (JavaScriptAlert)
- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(CGRect *)frame;
@end
@implementation UIWebView (JavaScriptAlert) - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(CGRect *)frame { if ([message isEqualToString:kShowTakePhotoButton]) { [[NSNotificationCenter defaultCenter] postNotificationName:kShowTakePhotoButton object:message]; } else if([message isEqualToString:kHideTakePhotoButton]) { [[NSNotificationCenter defaultCenter] postNotificationName:kHideTakePhotoButton object:message]; } else { [DXCommon showAlertMessage:message]; } NSLog(@"h5 message = %@",message); } @end
只要将以上类别导入到iOS工程中去就OK了,方法的实现是app工具自己的情况去实现,例如这里我拦截到kShowTakePhotoButton和kHideTakePhotoButton的时候分别抛出通知调用相应的方法,并且没有弹框,其他时候正常弹框;
实现类似微信里面浏览H5:
加载H5的并使用原生导航栏的时候,我们通过webView.canGoBack来判断是否是返回到最后一级页面,如果不是最后一级,添加关闭按钮(实现导航控制器pop),而返回按钮实现[webView
goBack];方法来实现返回上一级页面,否则导航控制器pop;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Extjs4.0 最新最全视频教程
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Javascript中toFixed方法的改进
- 5个常见可用性错误和解决方案
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js可突破windows弹退效果代码
- JSP脚本漏洞面面观
- 使用BAT一句话命令实现快速合并JS、CSS
- js显示当前星期的起止日期的脚本
- 爆炸式的JS圆形浮动菜单特效代码
- js select常用操作控制代码
- JS实现不使用图片仿Windows右键菜单效果代码
- 从jsp发送动态图像
- 原生js结合html5制作小飞龙的简易跳球
- js 页面模块自由拖动实例