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 相关文章推荐
javascript或asp实现的判断身份证号码是否正确两种验证方法
Nov 26 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
jquery鼠标停止移动事件
Dec 21 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
js编写的treeview使用方法
Nov 11 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
通过封装scroll.js 获取滚动条的值
Jul 13 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
Sep 29 Javascript
JS中准确判断变量类型的方法
Jun 01 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/01/28 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
PHP如何对用户密码进行加密
2014/07/31 面试题
雅虎笔试题(字符串操作)
2015/03/24 面试题
单位消防安全制度
2014/01/12 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
廉洁自律个人总结
2015/02/14 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python