文档章节

iOS之路21-JS与OC交互

Eric-osc
 Eric-osc
发布于 2016/02/28 17:18
字数 381
阅读 63
收藏 4

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

}


© 著作权归作者所有

共有 人打赏支持
Eric-osc
粉丝 4
博文 23
码字总数 7046
作品 0
东城
iOS与JS交互之UIWebView-JSExport协议

级别:★★☆☆☆ 标签:「iOS与JS交互」「UIWebView与JS交互」「JSExport」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),JS指前端(不...

QiShare
08/31
0
0
iOS WebView和JS的交互

前言 现在web前端发展越来越快,为了追求应用的快速开发和迭代,许多产品都会选择混合开发,在手机端嵌入web页面,那么这就会导致一个问题, 原生代码怎么和js交互?那么下边我们共同学习一下...

小猿_Luck_Boy
05/17
0
0
iOS与JS交互之UIWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「UIWebView与JS交互」「UIWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
08/28
0
0
iOS与JS交互之WKWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「WKWebView与JS交互」「WKWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
09/01
0
0
JS与OC-WebView交互总结

OC与JS交互有两种方式,WKWebView和UIWebView,由于UIWebView比较耗内存,性能上不太好,所以苹果在iOS 8中推出了WKWebView。 一、与UIWebView交互 在UIWebView与JS交互中最简单的办法就是拦截...

乔兰伊雪
05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

6. Python3源码—List对象

6.1. List对象 List对象是“变长对象”。 6.1.1. Python中的创建 Python中List对象最重要的创建方法为PyList_New,如下Python语句最终会调用到PyList_New: test = [1, 2, 3, 4, 5] 6.1.2. ...

Mr_zebra
7分钟前
0
0
nginx屏蔽指定接口(URL)

Step1:需求 web平台上线后,需要屏蔽某个服务接口,但又不想重新上线,可以采用nginx屏蔽指定平台接口的办法 Step2:具体操作 location /dist/views/landing/UNIQUE_BEACON_URL { re...

Linux_Anna
15分钟前
0
0
tomcat高并发配置调优

作者:Joker-pan 原文:https://blog.csdn.net/u011622226/article/details/72510385?utm_source=copy --------------------- tomcat 解压就使用的,配置都没动过,肯定不能支持高并发了; ...

imbiao
33分钟前
0
0
mysql 联结,级联查询总结区分

其实我对 数据库的级联或者联结查询一直都是会用,项目能查询出来自己想要的结果即可。 毕竟SQL使用复杂的查询毕竟比较少,而且不难使用。 至于区分他们,我还真的有点模糊。 在看 《SQL必知...

之渊
50分钟前
1
0
区块链入门教程分享区块链POW证明代码实现demo

兄弟连区块链入门教程分享区块链POW证明代码实现demo 这里强调一下区块链的协议分层 应用层 合约层 激励机制 共识层 网络层 数据层 上 一篇主要实现了区块链的 数据层,数据层主...

兄弟连区块链入门教程
57分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部