• 技术文章 >web前端 >js教程

    JS交互点击WKWebView中的图片并预览实例

    小云云小云云2018-01-08 09:09:11原创1336
    本文主要介绍了JS交互点击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) //一定要加上这句话 
    }

    相关推荐:

    iOS用WKWebView加载视频报错Code=204

    IOS Html富文本渲染方式:DTCoreText、WKWebView、UIWebView的内存占用对比_html/css_WEB-ITnose

    关于 WebView 知识点的详解

    以上就是JS交互点击WKWebView中的图片并预览实例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:javascript WKWebView web
    上一篇:three.js编写的一个项目类示例代码分享 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 浅析Angular中的Change Detection机制• 实战学习:聊聊Node.js怎么操作数据库• 一文聊聊node中的path模块• 浅析Angular变更检测中的订阅异步事件• 聊聊如何选择一个最好的Node.js Docker镜像?
    1/1

    PHP中文网