点击HTML的图片来预览图片
发布日期:2022-03-18 08:27:44
浏览次数:31
分类:技术文章
本文共 2109 字,大约阅读时间需要 7 分钟。
转载自:
概述
该DEMO主要用于演示iOS APP中点击HTML的图片来实现本地预览,如下是演示图
原理阐述
1. 背景知识
在了解该原理之前,需要知道如下内容:
html中的点击动作一般都是通过javascript来实现的,如下面代码:
var img = document.getElementById('test');img.onclick = function() { alert("test");}
PS: 以上代码实现的是点击
< img id="test">
来弹出含test的提示框. 当然可以通过getElementsByTagName
,getElementsByClassName
获取标签元素javascript与objc交互
在iOS APP开发过程中,是通过UIWebView来加载html页面,因此javascript要与objc交互,桥梁应该就在UIWebview提供的API中,通过查找,发现如下一些接口://objc 传参给javascript- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;//javascript 传参给objc, 参数是存在于request中 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
2. 实现细节
在UIWebview加载完html后,调用
stringByEvaluatingJavaScriptFromString
来执行如下javascript
代码,可以使用压缩下function assignImageClickAction() { 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 }}}assignImageClickAction();
在
webView:shouldStartLoadWithRequest:navigationType
处理image-preview
附上主要代码:
- (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]; [self.imageView setImageWithURL:[NSURL URLWithString:path] placeholderImage:[UIImage imageNamed:@"default"] usingActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; [UIView animateWithDuration:0.2f animations:^{ self.imageView.alpha = 1.0f; }]; return NO; } return YES;}- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.webView stringByEvaluatingJavaScriptFromString:@"function assignImageClickAction(){var imgs=document.getElementsByTagName('img');var length=imgs.length;for(var i=0;i
转载地址:https://windzen.blog.csdn.net/article/details/53610289 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月31日 06时20分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
安卓中如何实现左滑菜单
2019-04-26
安卓流式布局FlowLayout样例
2019-04-26
Kotlin打印方法执行耗时
2019-04-26
Unity 之 UGUI Button按钮组件详解
2019-04-26
Angular2工程部署到Tomcat服务器,第一次访问正常,刷新浏览器后报404错误
2019-04-26
【力扣】155. 最小栈
2019-04-26
【力扣】160. 相交链表
2019-04-26
【力扣】167. 两数之和 II - 输入有序数组
2019-04-26
【力扣】168. Excel表列名称
2019-04-26
【剑指OFFER】面试题32 - III. 从上到下打印二叉树 III
2019-04-26
【力扣】200. 岛屿数量
2019-04-26
【剑指OFFER】面试题33. 二叉搜索树的后序遍历序列
2019-04-26
【剑指OFFER】面试题34. 二叉树中和为某一值的路径
2019-04-26
【剑指OFFER】面试题35. 复杂链表的复制
2019-04-26
【力扣】138. 复制带随机指针的链表
2019-04-26
【力扣】113. 路径总和 II
2019-04-26
【剑指OFFER】面试题36. 二叉搜索树与双向链表
2019-04-26
【剑指OFFER】面试题39. 数组中出现次数超过一半的数字
2019-04-26
Python3网络爬虫数据采集(1~3)
2019-04-26