iOS 与 JS 交互
来源:互联网 发布:电脑网络连接出现红叉 编辑:程序博客网 时间:2024/05/01 01:14
1. 通过UIWebView与JS交互
通过网页实现native和服务器的交互so easy.当然要实现webview的delegate. self.webView.delegate =self;
1.1 iOS客户端调用JS的方法.
直接使用系统的方法stringByEvaluatingJavaScriptFromString调用JS的方法即可.
[_webView stringByEvaluatingJavaScriptFromString:@"smallfont()"];
*注: smallfont()是JS的方法.
1.2 JS调用iOS的方法.
相比于安卓,iOS 被调用的时候比较麻烦,因为安卓直接有可以被调用的方法,iOS比较矜持了,是不能直接被调用的
1. 首先咱们要喝服务器端定义好方法和标示. 比如 自家的服务器定义的 js2ios://{"functionname":"buyNow","args":"88888888"} 意思就是我的参数中带js2ios,我要和你交互了.你给我实现buyNow的方法(functionname)我要使用参数(args)88888888打电话了.
2. 由于iOS 只能在url重定向的时候实现被js调用,所以前提是我点网页上要交互的按钮之类的,要能跳进我的
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 方法,如果不进,你就可以告诉服务器的小哥说;嗨,帅哥,你的代码可能有点问题,前提是你自己确保实现了webview的delegate,也就是 self.webView.delegate = self;
3. 现在就是我们在- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 中拦截url了.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([request.URL.schemeisEqualToString:@"js2ios"]) {
// decode
NSString *decodeUrlStr1 = [request.URL.absoluteStringstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *decodeUrlStr;
SEL selctor =NSSelectorFromString(截取到的方法名);
IMP imp = [selfmethodForSelector:selctor];
void (*func) (id,SEL) = (void *)imp;
func(self,selctor);
// [self performSelector:selctor withObject:nil];
// 此处直接调用注释的方法会有警告,可以参考: 我的这篇文章<iOS PerformSelector may cause a leak because its selector is unknown>
// 当然这里如果不想加载特定的url,或者加载特定的url的时候要进行特殊的处理,可以在这里拦截
}
returnYES;
}
2. 运行时交互
努力学习中...
- ios 与js 交互
- iOS 与 JS 交互
- iOS 与 js 交互
- ios与js 交互
- iOS与JS交互
- iOS 与 JS 交互
- JS 与 iOS 交互
- IOS 与 JS 交互
- ios与js交互
- iOS与JS交互
- iOS与JS交互
- iOS与JS交互
- iOS与js交互
- iOS与js交互总结
- ios UIWebView与JS交互
- iOS webView 与js交互
- iOS UIWebView与JS交互
- iOS与JS的交互
- 最后一个被删除的元素
- show table status like 'table'\G 详细信息介绍
- sscanf/sprintf 用法
- threading 多线程
- ubuntu下文件压缩/解压缩命令总结
- iOS 与 JS 交互
- translate() & maketrans()
- 《Java虚拟机原理图解》 1.1、class文件基本组织结构
- excel输出
- yield 生成器即方法
- Asp.Net北大青鸟总结(二)-asp.net控件技术
- ×× & × 参数魔法
- [日志_log4j] 总结
- 创建包