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压缩工具 yuicompressor 使用教程
Mar 31 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
Jun 28 Javascript
js中的scroll和offset 使用比较的实例与分析
Sep 29 Javascript
JS批量修改PS中图层名称的方法
Jan 26 Javascript
JavaScript获取function所有参数名的方法
Oct 30 Javascript
AngularJS学习笔记之依赖注入详解
May 16 Javascript
AngularJS实现分页显示数据库信息
Jul 01 Javascript
Bootstrap字体图标无法正常显示的解决方法
Oct 08 Javascript
Bootstrap table使用方法总结
May 10 Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 Javascript
JavaScript前端面试组合函数
Jun 21 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创建多级目录代码
2008/06/05 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
详解Python sys.argv使用方法
2019/05/10 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
会议邀请书范文
2014/02/02 职场文书
小班秋游活动方案
2014/02/22 职场文书
降消项目实施方案
2014/03/30 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
车辆管理制度范本
2015/08/05 职场文书