iOS WKWebView 点击图片放大
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
/// 禁止缩放
let injectionJSString = """
var script = document.createElement('meta');\
script.name = 'viewport';\
script.content="width=device-width, user-scalable=no";\
document.getElementsByTagName('head')[0].appendChild(script);
"""
webView.evaluateJavaScript(injectionJSString, completionHandler: nil)
/// 取得图片
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.append(contentsOf: urlArry)
}
// 点击图片
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.οnclick=function(){" +
"window.location.href='image-preview:'+this.src}" +
"}" +
"}"
webView.evaluateJavaScript(jsClickImage, completionHandler: nil)
webView.evaluateJavaScript("registerImageClickAction()", completionHandler: nil)
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let requestString = navigationAction.request.url?.absoluteString
if (requestString?.hasPrefix("image-preview"))!{
let imgUrl = NSString.init(string: requestString!).substring(from: "image-preview:".count )
let index = imgUrlArray.firstIndex(of: imgUrl)
let browser = JXPhotoBrowser()
browser.numberOfItems = { [weak self] in
self?.imgUrlArray.count ?? 0
}
browser.reloadCellAtIndex = { [weak self] context in
let imgPath = self!.imgUrlArray[context.index]
let browserCell = context.cell as? JXPhotoBrowserImageCell
browserCell?.imageView.setYYWebImage(urlStr: imgPath, placeholder: goodsPlaceImageName)
}
browser.pageIndicator = JXPhotoBrowserNumberPageIndicator()
browser.pageIndex = index ?? 0
browser.show()
}
decisionHandler(.allow)
}
浏览图片用的是 JXPhotoBrowser 框架