进击的KFC:iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
2016-03-21 16:45
1436 查看
最近项目某个模块中要求可以实现对网页中图片的查看,并要求在多张图片的情况下可以实现滑动浏览。
所以,问题的集中点就是如何获取所有的图片地址及添加图片的点击事件。不多说,直接上码!
在网页加载完成时,通过js获取图片和添加点击的识别方式
后记:js挺好玩,我相信以后还会去多接触它。
所以,问题的集中点就是如何获取所有的图片地址及添加图片的点击事件。不多说,直接上码!
在网页加载完成时,通过js获取图片和添加点击的识别方式
- (void)webViewDidFinishLoad:(UIWebView *)webView { [IDProgressHUD IDPlaceViewHideDirect:self.view]; //这里是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;\ };"; [webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法 NSString *urlResurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"]; mUrlArray = [NSMutableArray arrayWithArray:[urlResurlt componentsSeparatedByString:@"+"]]; if (mUrlArray.count >= 2) { [mUrlArray removeLastObject]; } //urlResurlt 就是获取到得所有图片的url的拼接;mUrlArray就是所有Url的数组 //添加图片可点击js [mWebView stringByEvaluatingJavaScriptFromString:@"function registerImageClickAction(){\ var imgs=document.getElementsByTagName('img');\ var length=imgs.length;\ for(var i=0;i<length;i++){\ img=imgs[i];\ img.onclick=function(){\ window.location.href='image-preview:'+this.src}\ }\ }"]; [mWebView stringByEvaluatingJavaScriptFromString:@"registerImageClickAction();"]; } //在这个方法中捕获到图片的点击事件和被点击图片的url - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { //预览图片 if ([request.URL.scheme isEqualToString:@"image-preview"]) { NSString* path = [request.URL.absoluteString substringFromIndex:[@"image-preview:" length]]; path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //path 就是被点击图片的url return NO; } return YES; }
后记:js挺好玩,我相信以后还会去多接触它。
相关文章推荐
- iOS开发调试技巧总结
- IOS 接入的应用服务端开发资料搜集
- IOS安装CocoaPods完整流程
- iOS使用ngcordova的插件
- ios开发要注意函数是否旧版不支持
- ios手势识别——旋转、捏合、滑动、拖动、长按
- IOS各种调试技巧豪华套餐
- iOS 问题收集及处理 (弃用方法收集)持续更新中(warning,errors)
- 函数调用
- iOS 的GET和post请求
- 修改frame快捷方法,不必再繁琐的计算
- iOS开发之iOS与js的交互
- iOS 栈和堆的区别
- iOS边练边学--transform的简单介绍并且用transform实现键盘处理
- iOS开发 - runtime运行时一些实用方法
- iOS添加蒙层(遮盖层),遮盖层上放控件
- 获取DeviceToken值,iOS推送
- iOS知识 exclusiveTouch
- iOS经典资料收集
- KVO的概述与使用