iOS 利用UIWebView与JavaScript交互的最简单办法
2015-11-24 19:32
555 查看
这里说的是针对iOS的!并且方法很简单!!并且验证可行的!!!
1, UIWebView调用 JavaScript 的函数:
NSString* strValue = [webView stringByEvaluatingJavaScriptFromString:@"YourFunctionName('YourParameter')"];
上面这句就是调用 JavaScript里面自定义的函数 YourFunctionName(传入参数'YourParameter',取得返回值赋给strValue )
2,JavaScript (通过UIWebView)调用ObjC方法:
下面说到的是最简单、最通用的办法!!脚本写完之后可以丢到Android执行的:
就是利用UIWebView(Android的是WebView)拦截URL的功能!!!约定一个特殊URL,写在脚本,让上层去拦截分析!!比如,
在JavaScript写上:
window.location.href = "ABCD://XXXYYYZZZ"
在iOS里面:
实现UIWebViewDelegate下面这个函数(不要忘记设置 webView.delegate = self 这样细节)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString* strXXX = request.URL.resourceSpecifier;
//假设只是分析 "ABCD://"
NSRange range = [strXXX rangeOfString:@"ABCD://"];
if( range.location != NSNotFound )
{
//就在这里执行操作了!!!
return NO;//返回NO,表示取消对本次请求的导航
}
return YES;
}
//Android里面,利用WebView 重载这个函数也可以做到同样效果
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
这样,当JavaScript执行 window.location.href = "ABCD://XXXYYYZZZ" 这句,就触发上层的对应操作了!
也就是实现JavaScript调用上层ObjC函数的功能了
1, UIWebView调用 JavaScript 的函数:
NSString* strValue = [webView stringByEvaluatingJavaScriptFromString:@"YourFunctionName('YourParameter')"];
上面这句就是调用 JavaScript里面自定义的函数 YourFunctionName(传入参数'YourParameter',取得返回值赋给strValue )
2,JavaScript (通过UIWebView)调用ObjC方法:
下面说到的是最简单、最通用的办法!!脚本写完之后可以丢到Android执行的:
就是利用UIWebView(Android的是WebView)拦截URL的功能!!!约定一个特殊URL,写在脚本,让上层去拦截分析!!比如,
在JavaScript写上:
window.location.href = "ABCD://XXXYYYZZZ"
在iOS里面:
实现UIWebViewDelegate下面这个函数(不要忘记设置 webView.delegate = self 这样细节)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString* strXXX = request.URL.resourceSpecifier;
//假设只是分析 "ABCD://"
NSRange range = [strXXX rangeOfString:@"ABCD://"];
if( range.location != NSNotFound )
{
//就在这里执行操作了!!!
return NO;//返回NO,表示取消对本次请求的导航
}
return YES;
}
//Android里面,利用WebView 重载这个函数也可以做到同样效果
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
这样,当JavaScript执行 window.location.href = "ABCD://XXXYYYZZZ" 这句,就触发上层的对应操作了!
也就是实现JavaScript调用上层ObjC函数的功能了
相关文章推荐
- IOS图层Layer学习笔记(三)—— CALayer(下)
- Objective-C类,对象,方法
- iOS开发见闻-第8期
- BIOS中断大全:
- 有关于tableView的触摸事件
- Android app优化策略
- BIOS程序
- Android Studio的插件开发
- Android_改变状态栏颜色
- Android Log工具之Luffy
- BIOS在内存中加载中断向量表和中断服务程序
- Android启动过程
- iOS app调用打电话功能
- Android ListView相关
- Neither BindingResult nor plain target object for bean name 'internationalMakePrice' available as re
- Android开发时如何用小米3进行真机调试
- 【iOS】Updating local specs repositories
- iOS 关于枚举的使用
- Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据
- webapp开发要点记录