
点击HTML的图片来预览图片
发布日期:2022-03-18 08:27:44
浏览次数:17
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2023年05月19日 19时31分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
jsonp简介
2019-12-06 04:20:37
cookie 简介
2019-12-06 04:20:37
localStorage 简介
2019-12-06 04:20:37
js Date基础
2019-12-06 04:20:35
js 计算程序运行时间
2019-12-06 04:20:35
js数组
2019-12-06 04:20:36
js 本地时间中文化
2019-12-06 04:20:36
js 倒计时
2019-12-06 04:20:36
js Math 静态类
2019-12-06 04:20:35
js 地址请求解析
2019-12-06 04:20:35
js String基础
2019-12-06 04:20:35
js 条件语句&循环语句
2019-12-06 04:20:34
js 对象
2019-12-06 04:20:34
js 函数
2019-12-06 04:20:34
PC端页面布局 - 元素在父元素里上下左右居中
2019-12-06 04:20:32
垂直居中的又一种方法(补充)
2019-12-06 04:20:33
js数据类型转换(reset)
2019-12-06 04:20:33
运算符(review)
2019-12-06 04:20:33
**kwargs *args
2019-12-06 04:20:31
互联网协议理解
2019-12-06 04:20:31