iOS之路21-JS与OC交互

本文详细介绍了Objective-C如何执行JavaScript代码以及JavaScript如何调用Objective-C中的方法。包括使用UIWebView加载请求并监听加载完成事件、执行JavaScript代码来修改DOM元素、在Objective-C中调用JavaScript函数、自定义协议实现JS调用OC方法的过程。

一: 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;

}


转载于:https://my.oschina.net/u/2617794/blog/625460

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值