UIWebView与js通信
来源:互联网 发布:vivo手机mac地址修改 编辑:程序博客网 时间:2024/06/05 12:23
自从去年换工作之后,大致有半年时间没写博客了,主要是现在所处的公司项目是从零开始,而且入职的时候Andriod同事已经来了一个多月了,所以我基本每天都是赶工的状态,现在项目已经迭代了好几个版本,算是属于稳定的状态,今天所分享的是在项目中用到的js交互相关的知识点。
交互无非就是客户端将数据传递给js(js那边想要我们的数据,比如token等)、js将数据传递给客户端(我们这边想要js给的某个属性id)两种情况。
一:客户端将数据传递给js又分为两种
1:js主动调用我们客户端的方法获取我们这边传递过去的值
2:我们主动将值传递给js
针对第一种情况,我会利用实例讲解,项目就是采取这种技术实现的
第一步:首先创建JSContext对象(此处通过键值获取该对象),得到系统js对象
JSContext *context=[self.wedview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
第二步:js是通过对象调用得到数据的(我们这边必须和前端对象名保持一致),假如前端要主动获取我们的token的值,而他们前端有一个对象是MyToken,他们应该是通过MyToken.getToekn()方法获取token数据,那我们这边的该怎么操作呢,
a:
首先我们也得创建一个对象(自定义继承NSObject),但是对象的协议方法必须是getToekn(),和前端保持一致
#import <JavaScriptCore/JavaScriptCore.h>@protocol TokenProtocol <JSExport>- (NSString * )getToken;@end
@interface Token : NSObject<TokenProtocol>///定义block,回调到控制器中;@property (nonatomic,copy)NSString *(^showPickerBlock)();@end
@implementation Token//前端会主动调这个方法 然后我们这边通过block将值返回给他们- (NSString *)getToken{// NSLog(@"getToken %@",self.showPickerBlock()); return self.showPickerBlock(); }@end
b:自定义对象完成后,我们就可以创建该对象,然后通知block把值传递给前端
Token *MyToken = [Token new]; NSString *bertoken = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"]; [token setShowPickerBlock:^NSString *{ return bertoken; }]; context[@"MyToken"]=token;
(我们这边必须和前端对象名保持一致)前面说的这句就是指context这个对象的key,当然我是直接从JSContext对象创建开始讲解的,,UIWebView加载url大家直接加上。
到这就能实现前端主动获取我们移动端这边的数据,从而展示界面
第二种方式就是我们这边触发了某个事件之后将值传递个前端,从未改变了页面的显示
先来看看前端方法
function alertName(msg) {
alert('你好 ' + msg + ',我是js')
}
alertName这个方法是前端定义好的,而参数就是我要传递给前端的数据,前端拿到数据之后就进行另一步的实现,
我们这边也是只需要和该方法同步就行
[self.webView stringByEvaluatingJavaScriptFromString:@"alertName('我是张嘎')"];
在相应事件中执行上面的代码就可以把想要的数据传递给前端。到此也能实现简单的传值。
- uiwebview 与js 通信
- UIWebView与js通信
- UIWebView 中 JS 与 Objective-C 通信
- uiwebview与js交互
- UIWebView与js交互
- uiwebview与js交互
- uiwebview与js交互
- UIWebView与JS交互
- uiwebview与js交互
- uiwebview与js交互
- UIWebView与JS交互
- UIWebView与js交互
- UIWebView与JS交互
- JS与UIWebView交叉编程
- UIWebView与JS交互上
- JS与UIWebView交叉编程
- UIWebView与js(JavaScript)交互
- JS与UIWebView的交互
- 2.3jQuery选择器和事件-事件之绑定、解除绑定事件
- mysq复习
- Mac 使用OpenSSL生成 DSA公钥与私钥
- 【VS开发】程序如何捕捉signal函数参数中指定的信号
- Codeforces Round #404 (Div. 2) C(数学)(精度)
- UIWebView与js通信
- Linux学习日志(15)- 常用GCC编译控制选项
- MVC教程:MVC---View处理页面;Control处理业务逻辑;Model处理数据
- 精彩sql 帐户系统余额统计是否正确检查
- caffe 15 caffe在ubuntuX64_1604上安装(CPU_ONLY)
- HTTP-服务器端CooKie与浏览器端Cookie
- NAT 技术详解
- java读取不到properties文件所在路径
- 金蝶商业智能解决方案助力企业管理升级