JS-OC交互专题1-截取网站字符串
2016-01-25 10:50
501 查看
oc文件
jsIOS.html
- (void)viewDidLoad { [super viewDidLoad]; _webView.delegate = self; _webView.backgroundColor = [UIColor clearColor]; _webView.scalesPageToFit =YES; NSString *basePath = [[NSBundle mainBundle]bundlePath]; NSString *helpHtmlPath = [basePath stringByAppendingPathComponent:@"jsIOS.html"]; NSURL *url = [NSURL fileURLWithPath:helpHtmlPath]; NSURLRequest *request=[NSURLRequest requestWithURL:url]; [_webView loadRequest:request]; } //html页面的js动作触发时运行 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { //获取请求的绝对路径. NSString *urlString = [[request URL] absoluteString]; urlString = [urlString stringByRemovingPercentEncoding]; NSLog(@"urlString=%@",urlString); //提交请求时候分割参数的分隔符 NSArray *urlComps = [urlString componentsSeparatedByString:@":@@"]; if([urlComps count] && [[urlComps objectAtIndex:0] isEqualToString:@"objc"]){ NSArray *arrFucnameAndParameter = [(NSString*)[urlComps objectAtIndex:1] componentsSeparatedByString:@":/"]; NSString *funcStr = [arrFucnameAndParameter objectAtIndex:0]; if (1 == [arrFucnameAndParameter count]){ // 没有参数 if([funcStr isEqualToString:@"doFunc1"]){ /*调用本地函数1*/ NSLog(@"doFunc1"); } } else{ //有参数的 if([funcStr isEqualToString:@"getParam1:withParam2:"]){ [self getParam1:arrFucnameAndParameter[1] withParam2:arrFucnameAndParameter[2]]; NextViewController * vc = [[NextViewController alloc]init]; [self presentViewController:vc animated:YES completion:nil]; } } return NO; } return TRUE; } -(void)getParam1:(NSString*)str1 withParam2:(NSString*)str2 { NSLog(@"收到html传过来的参数:str1=%@,str2=%@",str1,str2); }
jsIOS.html
</DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="content-type"> <title>js调用oc</title> <script type="text/javaScript"> function testClick(cmd) { var str1=document.getElementById("text1").value; var str2=document.getElementById("text2").value; window.location.href="objc:@@"+cmd+":/"+EncodeUtf8(str1)+":/"+EncodeUtf8(str2); } // 字符串转换utf-8 function EncodeUtf8(s1) { // escape函数用于对除英文字母外的字符进行编码。如“Visit W3School!”->"Visit%20W3School%21" var s = escape(s1); var sa = s.split("%");//sa[1]=u6211 var retV =""; if(sa[0] != "") { retV = sa[0]; } for(var i = 1; i < sa.length; i ++) { if(sa[i].substring(0,1) == "u") { retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5))); if(sa[i].length>=6) { retV += sa[i].substring(5); } } else retV += "%" + sa[i]; } return retV; } function Str2Hex(s) { var c = ""; var n; var ss = "0123456789ABCDEF"; var digS = ""; for(var i = 0; i < s.length; i ++) { c = s.charAt(i); n = ss.indexOf(c); digS += Dec2Dig(eval(n)); } //return value; return digS; } function Dec2Dig(n1) { var s = ""; var n2 = 0; for(var i = 0; i < 4; i++) { n2 = Math.pow(2,3 - i); if(n1 >= n2) { s += '1'; n1 = n1 - n2; } else s += '0'; } return s; } function Dig2Dec(s) { var retV = 0; if(s.length == 4) { for(var i = 0; i < 4; i ++) { retV += eval(s.charAt(i)) * Math.pow(2, 3 - i); } return retV; } return -1; } function Hex2Utf8(s) { var retS = ""; var tempS = ""; var ss = ""; if(s.length == 16) { tempS = "1110" + s.substring(0, 4); tempS += "10" + s.substring(4, 10); tempS += "10" + s.substring(10,16); var sss = "0123456789ABCDEF"; for(var i = 0; i < 3; i ++) { retS += "%"; ss = tempS.substring(i * 8, (eval(i)+1)*8); retS += sss.charAt(Dig2Dec(ss.substring(0,4))); retS += sss.charAt(Dig2Dec(ss.substring(4,8))); } return retS; } return ""; } </script> </head> <body> <p><input type="text" id="text1" value="我来自ios苹果"/></p> <p><input type="text" id="text2" value="我来自earth地球"/></p> <p><input type="button" id="enter" value="enter" onclick="testClick('getParam1:withParam2:');"/></p> </body> </html>
相关文章推荐
- 实用网站模板
- 《1024伐木累》-小白篇之开发网站,三天!(中篇-1)-总章节十
- 服务器管理之IIS网站解决401错误
- 从技术细节看美团的架构
- 提高网站打开速度的7大秘籍---依据Yslow工具的优化【转】
- 生成动态加载图标的网站
- php代码架构的八点注意事项
- 如何优化WordPress网站 让百度快速收录?
- php代码架构的八点注意事项
- 十大IT网站排名 及IT论坛(技术社区)排名
- 如何为 Drupal 7 网站添加悬浮的反馈按钮?
- 什么是RESTful架构?相比于RESTful架构,传统的MVC架构又有哪些区别?
- storm入门架构
- 网站系统技术
- 大型网站架构系列:消息队列(二)
- IOS实战之项目架构
- Mesos入门介绍
- Linux主流架构运维工作简单剖析
- 【转】关于架构师和架构设计的一些常见误解(3)
- 【转】关于架构师和架构设计的一些常见误解(2)