iOS - html 与 oc交互
来源:互联网 发布:怎么样投诉淘宝客服 编辑:程序博客网 时间:2024/05/22 04:23
Objective-C语言调用JavaScript语言,是通过UIWebView的方法来实现的,
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
该方法向UIWebView传递一段需要执行的JavaScript代码
- (void)viewDidLoad { [super viewDidLoad]; //创建webView(iOS8中可使用wkWebView)并设置代理 _webView = [[UIWebView alloc]initWithFrame:self.view.bounds]; [self.view addSubview:_webView]; _webView.delegate = self; //加载本地html NSString *path = [[NSBundle mainBundle]pathForResource:@"h5" ofType:@"html"]; //转成UTF8 NSString *url = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //加载 [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];}- (void)webViewDidStartLoad:(UIWebView *)webView{ NSLog(@"开始加载");}- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { //当用户点击时捕获该网络请求url NSURL *url = [request URL]; //devzeng://login?name=XXXXXX&password=123456 if ([[url scheme] isEqualToString:@"devzeng"]) {//获取url标识 if ([[url host] isEqualToString:@"login"]) { //获取参数 --- name=XXXXXX&password=123456 NSDictionary *params = [self getParams:[url query]]; //与原生代码进行交互并返回结果 BOOL status = [self login:params[@"name"] password:params[@"password"]]; if (status) { [webView stringByEvaluatingJavaScriptFromString:@"alert('登录成功')"]; }else{ [webView stringByEvaluatingJavaScriptFromString:@"alert('登录失败')"]; } } } return YES;}- (BOOL)login:(NSString *)name password:(NSString *)pwd{ if ([name isEqualToString:@"XXXXXX"] && [pwd isEqualToString:@"123456"]) { return YES; } return NO;}- (NSDictionary*)getParams:(NSString *)str{ NSArray *arr = [str componentsSeparatedByString:@"&"]; NSArray *nameArr = [arr[0] componentsSeparatedByString:@"="]; NSArray *pwdArr = [arr[1] componentsSeparatedByString:@"="]; NSDictionary *dic = @{@"name":nameArr[1],@"password":pwdArr[1]}; return dic;}
常见用法
1.获取页面title
NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];
2.获取当前的url
NSString *url = [webview stringByEvaluatingJavaScriptFromString:@"document.location.href"];
除以上方法外也可使用第三方的框架
https://github.com/marcuswestin/WebViewJavascriptBridge
相关内容整理自网络,参考链接:
曾静技术博客-iOS中JavaScript和OC交互
iOS开发之Objective-C与JavaScript的交互
关于UIWebView的总结
附html
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta content="always" name="referrer" /> <title>测试网页</title> </head> <body> <br /> <a href="devzeng://login?name=XXXXXX&password=123456">点击链接</a> </body></html>
0 0
- iOS - html 与 oc交互
- iOS中HTML与OC的交互实现
- iOS OC与js交互
- IOS 原生与HTML交互
- iOS OC与js的交互
- IOS WebView OC与JS 交互 WebViewJavascriptBridge
- iOS开发:OC与JS交互
- ios oc与js的交互总结
- iOS OC与JS,JS与OC交互
- js、oc、html交互
- 《HTML学习笔记—OC与HTML5的交互》
- OC与JS的交互(iOS与H5混编)
- ios 进阶 -- webview 与html 页面交互
- ios 与 html 5 交互 的实现
- iOS的UIWebView与html的交互
- html网页与iOS的简单交互
- iOS 与JS Html常见交互
- html与iOS/Android的兼容交互
- 【BZOJ3996】[TJOI2015]线性代数【最小割】
- swift optional——swift学习(二)
- OneThink安装失败解决方法
- 将vmware的多个硬盘文件合并为一个
- mysql基本操作(表的增删查改)、约束、表设计
- iOS - html 与 oc交互
- Android aidl Binder框架浅析
- iOS学习之——self与super
- 罗马字母读法
- MySQL的EXPLAIN命令用法
- android中如何解析XML文件
- AndroidStudio导入新项目一直卡在Building gradle project info的解决解决方案
- android网络编程——使用Android中的网络连接
- toLowerCase和toLocaleLowerCase()的区别