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 相关文章推荐
js option删除代码集合
Nov 12 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
鼠标拖拽移动子窗体的JS实现
Feb 25 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
jsTree使用记录实例
Dec 01 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
Vue.js实现输入框绑定的实例代码
Aug 24 Javascript
限时抢购-倒计时的完整实例(分享)
Sep 17 Javascript
vue-router history模式下的微信分享小结
Jul 05 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
Oct 07 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
Dec 06 Javascript
weui上传多图片,压缩,base64编码的示例代码
Jun 22 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
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
php常用数组函数实例小结
2016/12/29 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
跟老齐学Python之再深点,更懂list
2014/09/20 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python如何实现邮件功能
2020/05/27 Python
详解python对象之间的交互
2020/09/29 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
委托书范本
2014/04/02 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
二年级数学教学反思
2016/02/16 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL