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实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 Javascript
谈谈jQuery Ajax用法详解
Nov 27 Javascript
第十章之巨幕页头缩略图与警告框组件
Apr 25 Javascript
浅谈js数据类型判断与数组判断
Aug 29 Javascript
JavaScript实现一个带AI的井字棋游戏源码
May 21 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 Javascript
ES2020 已定稿,真实场景案例分析
May 25 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
一个目录遍历函数
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js 表格隔行颜色
2009/12/02 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
python实现随机梯度下降法
2020/03/24 Python
Python正则表达式指南 推荐
2018/10/09 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python range实例用法分享
2020/02/06 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
产品质量承诺范本
2014/03/31 职场文书
家长对孩子的寄语
2015/02/26 职场文书
结婚仪式主持词
2015/06/29 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python