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中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
jQuery控制图片的hover效果(smartRollover.js)
Mar 18 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
Dec 18 Javascript
微信小程序实现随机验证码功能
Dec 20 Javascript
微信小程序之数据绑定原理解析
Aug 14 Javascript
小程序开发之模态框组件封装
Apr 23 Javascript
Element-ui upload上传文件限制的解决方法
Jan 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性能优化的介绍
2013/06/20 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python修改MP3文件的方法
2015/06/15 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
电子狗项圈:eDog Australia
2019/12/04 全球购物
行政管理毕业生自荐信
2014/02/24 职场文书
单位承诺书格式
2014/05/21 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers