iOS 常见的JS与iOS交互的需求与解决方案
来源:互联网 发布:淘宝网触屏版官网 编辑:程序博客网 时间:2024/06/07 01:41
更新时间: 2017.3.15
1.网页上获取登录id信息
直接在网页地址后面拼接上用户信息
例如: http://host/mine.asp?phoneid=18739929333
2.获取网页上的所有图片链接
注入获取图片标签链接的JS方法 —> iOS调用JS方法获取到所有img标签下的链接(字符串形式)—> 分割字符串获取结果数组
// 获取main NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName(\"main\")"]; //这里是js,主要目的实现对url的获取 static NSString * const jsGetImages = @"function getImages(){\ var objs = document.getElementsByTagName(\"img\");\ var imgScr = '';\ for(var i=0;i<objs.length;i++){\ imgScr = imgScr + objs[i].src + '+';\ };\ return imgScr;\ };"; // 获取img标签 [webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法 // img 标签 NSString *urlResurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"]; NSMutableArray *mUrlArray = [NSMutableArray arrayWithArray:[urlResurlt componentsSeparatedByString:@"+"]]; if (mUrlArray.count >= 2) { [mUrlArray removeLastObject]; } // mUrlArray is the result url array
3.JS调用iOS方法
获取JS调用时机—> 调用iOS方法
以 JavaScriptCore环境为例:
首先你需要在 - (void)webViewDidFinishLoad:(UIWebView *)webView
方法中获取到网页中的JS上下文, 然后再知道JS里面定义的函数有哪些的前提下定义OC命令回调:
Ex: 我这里网页中有JS函数:
function scanClick() { scan(); }
对应完成加载的代理方法中我可以写:
- (void)webViewDidFinishLoad:(UIWebView *)webView{ // 获取到网页中的JS上下文 JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // 定义对应JS方法被调用的时候需要进行的操作 context[@"scan"] = ^() { NSLog(@"扫一扫啦"); };}
4.当检测到要访问某个网址的时候禁止访问或者做其他业务处理
webView代理方法中有一个决定web是否正常加载的方法:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在内部可以获取到将要访问的网址, 判断该网址, 如果符合条件就返回NO或者执行其他操作:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ if ([[[request URL] absoluteString] isEqualToString:@"http://www.baidu.com"]) { // return NO means webView will not start load request return NO; // or do something else // ... } return YES;}
0 0
- iOS 常见的JS与iOS交互的需求与解决方案
- iOS与JS的交互
- iOS 与JS Html常见交互
- ios webview与JS的交互
- iOS js与objective-c的交互
- iOS OC与js的交互
- iOS UIWeb与JS之间的交互
- iOS开发-WebView与JS的交互
- ios webView与js的交互
- iOS与JS交互的总结
- iOS Webview与js的交互
- iOS与js 的简单交互
- iOS webView与本地js的交互
- ios oc与js的交互总结
- iOS JS交互--UIWebView与JS的交互
- ios 与js 交互
- iOS 与 JS 交互
- iOS 与 js 交互
- Stereo Matching文献笔记之(一):《Cross-Scale Cost Aggregation for Stereo Matching》读后感~
- 《ACM程序设计》书中题目M
- 第一次程序设计作业《三天打鱼两天晒网》
- selenium截图get_screenshot_as_file()方法,中文路径和文件名解决方案
- java——IO
- iOS 常见的JS与iOS交互的需求与解决方案
- 【Theano】使用Theano编写神经网络
- testng性能测试,循环测试,线程测试,优先级
- Requests Header | Http Header
- c++primer学习笔记-----2.2变量
- CSS 面向对象注意事项
- uva714
- org.hibernate.id.IdentifierGenerationException
- MySQL、Oracle、SQLServer 数据分页查询语句