iOS开发 UIWebView JS交互
2013-11-21 10:15
281 查看
1.在OC修改/获取网页内容的方法
OC提供了Api,调用网页中的JS方法:stringByEvaluatingJavaScriptFromString;
通过这个方法,可以获取网页的URL,Tilte,插入JS脚本。
测试代码:
[objc] view
plaincopy
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//获取URL
NSString *curURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
//获取标题
/*
关于网页的标题
在网页HTML代码中,网页标题位于<head> </head>标签之间。其形式为:
<title>网络营销教学网站</title>
*/
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
//修改属性值
NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('good')[0].color='red';"];
//调用JS方法
[webView stringByEvaluatingJavaScriptFromString:@"funnight()"];
//结果打印
NSLog(@"jsresult=%@",js_result);
NSLog(@"title=%@",title);
NSLog(@"curURL=%@",curURL);
}
2.在JS函数中调用OC中的方法
需要用到WebView的协议函数:
测试代码:
[objc] view
plaincopy
//JS中的button调用OC中的方法
//WebView每次重定向的时候会调用<UIWebViewDelegate>协议中的方法,
//无论地址是否合法,协议方法shouldStartLoadWithRequest都会被调用,
//这样我们就可以在JS中button的触发函数中使网页重定向到我们自定义的地址中,
//这样OC中的UIWebViewDelegate协议中的shouldStartLoadWithRequest就会被调用,
-(void)ocFunc
{
NSLog(@"我是OC方法");
}
//(重定向之后)
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// //刷新地址栏
// if ([request.URL.absoluteString hasPrefix:@"http"]) {
// _textFeild.text = request.URL.absoluteString;
// }
_textFeild.text = request.URL.absoluteString;
// ://
NSArray *array = [request.URL.absoluteString componentsSeparatedByString:@"://"];
if ([[array objectAtIndex:0] isEqualToString:@"oc"]) {
NSString *ocStr = [array objectAtIndex:1];
//通过字符串调用函数
SEL sel = NSSelectorFromString(ocStr);
[self performSelector:sel];
}
return YES;
}
OC提供了Api,调用网页中的JS方法:stringByEvaluatingJavaScriptFromString;
通过这个方法,可以获取网页的URL,Tilte,插入JS脚本。
测试代码:
[objc] view
plaincopy
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//获取URL
NSString *curURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
//获取标题
/*
关于网页的标题
在网页HTML代码中,网页标题位于<head> </head>标签之间。其形式为:
<title>网络营销教学网站</title>
*/
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
//修改属性值
NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('good')[0].color='red';"];
//调用JS方法
[webView stringByEvaluatingJavaScriptFromString:@"funnight()"];
//结果打印
NSLog(@"jsresult=%@",js_result);
NSLog(@"title=%@",title);
NSLog(@"curURL=%@",curURL);
}
2.在JS函数中调用OC中的方法
需要用到WebView的协议函数:
测试代码:
[objc] view
plaincopy
//JS中的button调用OC中的方法
//WebView每次重定向的时候会调用<UIWebViewDelegate>协议中的方法,
//无论地址是否合法,协议方法shouldStartLoadWithRequest都会被调用,
//这样我们就可以在JS中button的触发函数中使网页重定向到我们自定义的地址中,
//这样OC中的UIWebViewDelegate协议中的shouldStartLoadWithRequest就会被调用,
-(void)ocFunc
{
NSLog(@"我是OC方法");
}
//(重定向之后)
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// //刷新地址栏
// if ([request.URL.absoluteString hasPrefix:@"http"]) {
// _textFeild.text = request.URL.absoluteString;
// }
_textFeild.text = request.URL.absoluteString;
// ://
NSArray *array = [request.URL.absoluteString componentsSeparatedByString:@"://"];
if ([[array objectAtIndex:0] isEqualToString:@"oc"]) {
NSString *ocStr = [array objectAtIndex:1];
//通过字符串调用函数
SEL sel = NSSelectorFromString(ocStr);
[self performSelector:sel];
}
return YES;
}
相关文章推荐
- android App流量统计
- cocos2d-x-LuaProxy学习日志(7) -- 场景切换
- android学习笔记(7)ListView的使用
- ios 常用工具类
- 直接拿来用!最火的iOS开源项目
- android使用tabhost实现导航
- 我的Android进阶之旅------>Android资源文件string.xml中\u2026的意思
- Android 中fill_parent、wrap_content和match_parent的区别
- 解决main No MyBatis mapper was found in 的警告
- 持续整理APPLE GCC关键字
- objective-c-block 块
- Android中Activity的LunchMode参数详解
- listview android:cacheColorHint,android:listSelector属性作用
- Android 导入android源码有错,R.java文件不能自动生成解决方法
- ios-消息中心 NSNotificationCenter
- android adb启动失败问题 adb server is out of date. killing... ADB server didn't ACK * failed to start daem
- NDK Android.mk 编写模版
- Android中如何使用rotate实现图片不停旋转的效果与动画的停止
- android之LayoutInflater讲解
- 获取android应用的版本号