JS交互點擊WKWebView中的圖片實現(xiàn)預(yù)覽效果
- 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框架實現(xiàn)圖片預(yù)覽功能
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) //一定要加上這句話
}
總結(jié)
以上所述是小編給大家介紹的JS交互點擊WKWebView中的圖片實現(xiàn)預(yù)覽效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript canvas實現(xiàn)九宮格切圖效果
這篇文章主要為大家詳細介紹了JavaScript canvas實現(xiàn)九宮格切圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
JavaScript實現(xiàn)監(jiān)控上傳和下載進度
這篇文章主要介紹了JavaScript實現(xiàn)監(jiān)控上傳和下載進度,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下2022-05-05
淺析Javascript中雙等號(==)隱性轉(zhuǎn)換機制
這篇文章給大家詳細介紹了javascript中雙等號(==)隱性轉(zhuǎn)換機制,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-10-10
關(guān)于javascript中限定時間內(nèi)防止按鈕重復(fù)點擊的思路詳解
下面小編就為大家?guī)硪黄P(guān)于javascript中限定時間內(nèi)防止按鈕重復(fù)點擊的思路詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
JavaScript將對象數(shù)組按字母順序排序的方法詳解
這篇文章主要介紹了JavaScript如何將對象數(shù)組按字母順序排序,本文介紹了三種解決方案,if條件語句 + sort(),localeCompare() + sort(),Collator() + sort(),有感興趣的同學(xué)可以跟著小編一起來看看2023-07-07
Javascript實現(xiàn)仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
兼容:IE7以上版本及FF;(騰訊的WebQQ3.0好像也不兼容IE6,其實這樣挺好的)2011-04-04
javascript中定義私有方法說明(private method)
本篇文章主要是對javascript中定義私有方法(private method)進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01

