iOS之路21-JS与OC交互
博客专区 > Eric-osc 的博客 > 博客详情
iOS之路21-JS与OC交互
Eric-osc 发表于2年前
iOS之路21-JS与OC交互
  • 发表于 2年前
  • 阅读 63
  • 收藏 4
  • 点赞 1
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

一: OC执行JS代码

1.webView加载请求, request, 控制器成为webView的代理, 监听网页加载完毕会调用代理方法

/**

 *  网页加载完毕
 */

- (void)webViewDidFinishLoad:(UIWebView *)webView { }

2.让页面调用OC的方法, 它属于webView的方法,注意: 执行JS代码仅仅只有这一种方法:

[webView stringByEvaluatingJavaScriptFromString:@“JS代码];


举例 一:

/**
 * 
网页加载完毕
 */

- (
void)webViewDidFinishLoad:(UIWebView *)webView
{
   
NSString *js = @"document.getElementsByTagName('footer')[0].remove();";
    [webView
stringByEvaluatingJavaScriptFromString:js];
}

举例 二:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   
NSString *JS代码 = @"function login (username, pwd) {  "
                   
"   return 10;"
                   
"       }"
                   
"   login();";
   //     OC中调用JS的函数(执行JS代码)
   [webView stringByEvaluatingJavaScriptFromString:
@“JS代码];

}


二: JS调用OC代码, JS调用OC中的方法

1.需要自定义href协议, 可以指定方法名和参数: 然后将OC方法和参数值拼接在一个URL中

/*  通用url的设计
    1>
协议固定: hm:
    2>
一般有2个参数  2.1> 方法名  2.2> 方法参数

*/

window.location.href = 'hm:saveImageToAblum:&' + this.src

2.使用 <UIWebViewDelegate>代理方法拦截请求, 每发送请求之前系统会自动调用该代理方法:

/**
   
调用 : 每当webView发送一个请求之前都会先调用这个方法
    request :
即将发送的请求
    BOOL : Yes :
允许发送这个请求  No : 禁止发送这个请求
    navigationType :
是否在新窗口中打开

 */

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//        a) 在这个代理方法中拦截JS请求的URL
//        b) URL中截取相应的方法名和参数
//        c) 调用方法,传递参数

return YES/NO;

}


标签: JS与OC交互
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 4
博文 23
码字总数 7046
×
Eric-osc
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: