WebView与JS交互传值
2016-05-10 16:01
253 查看
/**************************WebView的代理方法*******************/
//webView 加载结束调用此方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//objc调用Js /** getMessageFromApp('%@')
是JS中的方法***/
NSString *jsCode = [NSString
stringWithFormat:@"getMessageFromApp('%@')",@"我是app发来的消息"];
//app向 js发送信息调用此方法
[_myWebVIew
stringByEvaluatingJavaScriptFromString:jsCode];
//app发送的消息将会显示在网页上
}
//js向app提交信息时的回调方法
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//从回调方法里app可以截获Js提交的信息
NSString *requestString = [[request
URL] absoluteString];
//获取请求的绝对路径
NSString *requestStrJm = [self
URLDecodedString:requestString];//将截获的信息解码
NSLog(@"截获的信息====%@",requestStrJm);
//======信息判断==========
NSArray *commponents = [requestStrJm
componentsSeparatedByString:@":"];
//提交请求时候分割参数的分隔符
if ([commponents
count] > 1 && [(NSString *)[commponents
objectAtIndex:0]
isEqualToString:@"testapp"]) {
if ([(NSString *)[commponents
objectAtIndex:1]
isEqualToString:@"alert"]) {
NSString *message = (NSString *)[commponents
obj
4000
ectAtIndex:2];
UIAlertView *alert = [[UIAlertView
alloc]initWithTitle:@"下面是js向app提交的信息"
message:message delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"确定",
nil];
[alert show];
}
return NO;
}
return
YES;
}
#pragma mark -------------- url
解码 -----------------
-(NSString *)URLDecodedString:(NSString *)str
{
NSString *decodedString=(__bridge_transfer
NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge
CFStringRef)str,
CFSTR(""),
CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return decodedString;
}
//webView 加载结束调用此方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//objc调用Js /** getMessageFromApp('%@')
是JS中的方法***/
NSString *jsCode = [NSString
stringWithFormat:@"getMessageFromApp('%@')",@"我是app发来的消息"];
//app向 js发送信息调用此方法
[_myWebVIew
stringByEvaluatingJavaScriptFromString:jsCode];
//app发送的消息将会显示在网页上
}
//js向app提交信息时的回调方法
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//从回调方法里app可以截获Js提交的信息
NSString *requestString = [[request
URL] absoluteString];
//获取请求的绝对路径
NSString *requestStrJm = [self
URLDecodedString:requestString];//将截获的信息解码
NSLog(@"截获的信息====%@",requestStrJm);
//======信息判断==========
NSArray *commponents = [requestStrJm
componentsSeparatedByString:@":"];
//提交请求时候分割参数的分隔符
if ([commponents
count] > 1 && [(NSString *)[commponents
objectAtIndex:0]
isEqualToString:@"testapp"]) {
if ([(NSString *)[commponents
objectAtIndex:1]
isEqualToString:@"alert"]) {
NSString *message = (NSString *)[commponents
obj
4000
ectAtIndex:2];
UIAlertView *alert = [[UIAlertView
alloc]initWithTitle:@"下面是js向app提交的信息"
message:message delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"确定",
nil];
[alert show];
}
return NO;
}
return
YES;
}
#pragma mark -------------- url
解码 -----------------
-(NSString *)URLDecodedString:(NSString *)str
{
NSString *decodedString=(__bridge_transfer
NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge
CFStringRef)str,
CFSTR(""),
CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return decodedString;
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Extjs4.0 最新最全视频教程
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Javascript中toFixed方法的改进
- 5个常见可用性错误和解决方案
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- js数组实现图片轮播
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js可突破windows弹退效果代码
- JSP脚本漏洞面面观
- 使用BAT一句话命令实现快速合并JS、CSS
- js显示当前星期的起止日期的脚本
- 爆炸式的JS圆形浮动菜单特效代码
- js select常用操作控制代码
- JS实现不使用图片仿Windows右键菜单效果代码
- 从jsp发送动态图像
- 原生js结合html5制作小飞龙的简易跳球