webview的使用以及js调用OC传参

webview如何想要js和oc交互,需要使用代理方法 ,并且需要和后台协定规则

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

NSString *url = request.URL.absoluteString;

NSLog(@"========%@",url);

NSString *urlString=request.URL.absoluteString;

//我们制定了一个协议,调用oc的方法都以hq://开头,后边跟着方法名

NSString *[email protected]"icocos:///";

//如果是我们自定义的协议hq://call

if ([urlString hasPrefix:scheme]) {

//取出scheme后边的路径

NSString *path=[urlString substringFromIndex:scheme.length];

//根据?区分出方法名  参数

NSArray *array=[path componentsSeparatedByString:@"?"];

NSLog(@"%@",array);

NSString *methodName=array.firstObject;

if (array.count == 2) {

NSString *str = [array.lastObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSDictionary *dict = [[NSString alloc] dictionaryWithJsonString:str];

[[NSUserDefaults standardUserDefaults]setObject:dict forKey:@"Wxpaydict"];

}

NSLog(@"-----------%@",methodName);

SEL method = NSSelectorFromString(methodName);

[self performSelector:method];

return NO;

}

return YES;

}

methodName就是你和后台协定的规则 方法名

NSString *[email protected]"icocos:///";  前后台必须要一致

下面是js传参给oc  还是很麻烦的

NSArray *array=[path componentsSeparatedByString:@"?"];

NSLog(@"%@",array);

NSString *methodName=array.firstObject;

if (array.count == 2) {

NSString *str = [array.lastObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSDictionary *dict = [[NSString alloc] dictionaryWithJsonString:str];

时间: 2024-10-01 06:29:50

webview的使用以及js调用OC传参的相关文章

UIWebView中Html中用JS调用OC方法及OC执行JS代码

1.HTML页面 1 <html> 2 3 <head> 4 5 <title>HTML中用JS调用OC方法</title> 6 7 <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> 8 9 <script> 10 11 function test() 12 13 { 14 15 alert("test

iOS JS 交互之利用系统JSContext实现 JS调用oc方法

ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择如下操作,(拖入的文件夹是蓝色的,相对路径),不然css,js 的路径会存在问题 加载本地html: oc调用js:一句代码搞定 2.js 调用oc js调用oc又分为两种: 1.js端是直接调用方法 这里就要说到ios7才推出的一个新的api    JavaScriptCore,首先我们引入这个类,并初始化一个JSContext对

[ios]js调用oc代码(oc)

用途:在ios开发中,经常回用到js调用oc代码的时候,例如在网页上有个拍照和打电话的按钮,想打开系统自带的拍照和电话的时候,就需要用到js调用oc代码的功能. 实现原理:在webView加载html网页的时候,没当发送一个请求,就会调用<UIWebViewDelegate>代理的 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIW

JS基础之传参(值传递、对象传递)

一.概念 我们需了解什么是按值传递(call by value),什么是按引用传递(call by reference).在计算机科学里,这个部分叫求值策略(Evaluation Strategy).它决定变量之间.函数调用时实参和形参之间值是如何传递的. 按值传递 VS. 按引用传递 按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本.修改形参的值并不会影响实参. 按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再

关于js调用oc

首先:要在项目导入 JavaScriptCore.frameWork 在webview的控制器.h中引用 #import <JavaScriptCore/JavaScriptCore.h> 然后:我们可以在 - (void)webViewDidFinishLoad:(UIWebView *)webView方法中 通过 JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaS

js方法之间的调用之——传参方法

在最近项目需求中发现,完成一些功能的时候总是要调很多结构类似的方法,写起来很繁琐,所以就想写一个“万能”方法,是的代码更简洁.即:把一个方法作为参数传给这个“万能”方法,让它去执行你给定的方法,就类似于ajax中success/error方法传参,总是传入一个方法体. ####1.将方法作为参数 代码: var a = function(){ console.info("我成功执行了..."); } var excuteFunc = function(funcName){ funcNa

js函数的传参问题

<!Doctype html> <html> <head> <title>js的传参问题</title> <script type="text/javascript"> function get(username) { alert(username); } </script> </head> <body> <input type="button" val

js函数动态传参

js函数体内可以通过arguments对象来接收传递进来的参数,利用这一对象属性可以动态传参. function box() { return arguments[0]+' | '+arguments[1]; //得到每次参数的值 } alert(box(1,2,3,4,5,6)); //传递参数 arguments对象的length属性可以得到参数的数量. function box() { return arguments.length; //得到6 } alert(box(1,2,3,4,5

js date对象传参获取特定日期的时间戳

当我们想要通过js获取某一特定时间的时间戳时,会通过给date对象传参再通过getTime函数来获取,传递的参数格式也有不同形式.有些时候,可能会因为自己传入参数的格式不正确而导致date对象invalid,进而导致逻辑出现错误. date对象传递的参数主要有字符串以及年月日等的数字,如下: new Date( year, month, date, hrs, min, sec) 参数说明: year的值为:需设定的年份-1900.例如需设定的年份是1997则year的值应为97,即1997-19