JS交互点击WKWebView中的图片实现预览效果


Posted in Javascript onJanuary 05, 2018
  • Swift 4.0
  • WKWebView

1.注入js代码 (重点)

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  let 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.evaluateJavaScript(jsGetImages, completionHandler: nil)
  webView.evaluateJavaScript("getImages()") { (data, err) in
    let imageUrl:String = data as! String
    var urlArry = imageUrl.components(separatedBy: "+")
    urlArry.removeLast()
    self.imgUrlArray.addObjects(from: urlArry)
    for url in self.imgUrlArray{
      let photo = SKPhoto.photoWithImageURL(url as! String)
      photo.shouldCachePhotoURLImage = false // you can use image cache by true(NSCache)
      self.images.append(photo)
    }
  }
  var jsClickImage:String
  jsClickImage = 
    "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}" +
    "}" +
    "}"
  webView.evaluateJavaScript(jsClickImage, completionHandler: nil)
  webView.evaluateJavaScript("registerImageClickAction()", completionHandler: nil)
}

2.使用SKPhotoBrowser框架实现图片预览功能

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  let requestString = navigationAction.request.url?.absoluteString
  print(requestString!)
  if (requestString?.hasPrefix("image-preview"))!{
    let imgUrl = NSString.init(string: requestString!).substring(from: "image-preview:".count )
    let index = imgUrlArray.index(of: imgUrl)
    let browser = SKPhotoBrowser(photos: images)
    browser.initializePageIndex(index)
    present(browser, animated: true, completion: {})
  }
  decisionHandler(.allow) //一定要加上这句话 
}

总结

以上所述是小编给大家介绍的JS交互点击WKWebView中的图片实现预览效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
JavaScript的21条基本知识点
Mar 04 Javascript
jquery移除、绑定、触发元素事件使用示例详解
Apr 10 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
Oct 07 Javascript
Node.js的文件权限及读写flag详解
Oct 11 Javascript
javascript图片预览和上传(兼容IE)
Mar 15 Javascript
基于vue2实现上拉加载功能
Nov 28 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
Jul 23 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
Servlet返回的数据js解析2种方法
Dec 12 Javascript
Vue组件的使用教程详解
Jan 05 #Javascript
基于three.js编写的一个项目类示例代码
Jan 05 #Javascript
js中this对象用法分析
Jan 05 #Javascript
Node中使用ES6语法的基础教程
Jan 05 #Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
Jan 05 #Javascript
vue脚手架中配置Sass的方法
Jan 04 #Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 #Javascript
You might like
用文本文件制作留言板提示(下)
2006/10/09 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python将文本分每两行一组并保存到文件
2018/03/19 Python
Python 监测文件是否更新的方法
2019/06/10 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
python模块如何查看
2020/06/16 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
夜大毕业生自我评价分享
2013/11/10 职场文书
求职推荐信范文
2013/12/01 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
动员大会主持词
2014/03/20 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
建设工程授权委托书
2014/09/22 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
Nginx报404错误的详细解决方法
2022/07/23 Servers