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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
JavaScript对内存分配及管理机制详细解析
Nov 11 Javascript
js中for in的用法示例解析
Dec 25 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
JavaScript模版引擎的基本实现方法浅析
Feb 15 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
Sep 15 Javascript
BootstrapTable加载按钮功能实例代码详解
Sep 22 Javascript
two.js之实现动画效果示例
Nov 06 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
微信小程序画布圆形进度条显示效果
Nov 17 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
Oct 28 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实现定时生成HTML网站首页实例代码
2008/11/20 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
php实现URL加密解密的方法
2016/11/17 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
js编写选项卡效果
2017/05/23 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
老生常谈python之鸭子类和多态
2017/06/13 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python命令 -u参数用法解析
2019/10/24 Python
如何利用Python写个坦克大战
2020/11/18 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
企业为何需要商业计划书
2013/12/26 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
公司应聘求职信
2014/06/21 职场文书
班组长安全工作职责
2014/07/15 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
2015年检验科工作总结
2015/04/27 职场文书
雷锋电影观后感
2015/06/10 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
Python如何将list中的string转换为int
2022/07/15 Ruby