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 相关文章推荐
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
基于jquery的仿百度搜索框效果代码
Apr 11 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
js中for in的用法示例解析
Dec 25 Javascript
jquery实现人性化的有选择性禁用鼠标右键
Jun 30 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
PHP捕捉异常中断的方法
Oct 24 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
Vuejs监听vuex中值的变化的方法示例
Dec 02 Javascript
Vue-CLI与Vuex使用方法实例分析
Jan 06 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中定义网站根目录的常用方法
2010/08/08 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python实现各种插值法(数值分析)
2019/07/30 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
python 实现aes256加密
2020/11/27 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
初中三好学生自我鉴定
2014/04/07 职场文书
蓝颜请假条
2014/04/11 职场文书
三万活动总结
2014/04/28 职场文书
禁烟标语大全
2014/06/11 职场文书
西安兵马俑导游词
2015/02/02 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
springboot读取nacos配置文件
2022/05/20 Java/Android