在web端進(jìn)行圖片點(diǎn)擊,就比較簡(jiǎn)單的往圖片標(biāo)簽里面注冊(cè)一個(gè)onclick方法
1、在didFinish中注冊(cè)
//這個(gè)是網(wǎng)頁(yè)加載完成,導(dǎo)航的變化
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
[self addImgClickJS];
}
2、在加載web端的時(shí)候攔截,那里打印的imgPath
就是點(diǎn)擊的圖片
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
// 類(lèi)似 UIWebView 的 -webView: shouldStartLoadWithRequest: navigationType:
//預(yù)覽圖片
NSURL * url = navigationAction.request.URL;
if ([url.scheme isEqualToString:@"image-preview-index"]) {
//圖片點(diǎn)擊回調(diào)
NSInteger index = [[url.absoluteString substringFromIndex:[@"image-preview-index:" length]] integerValue];
NSString * imgPath = self.imageUrlArr.count > index?self.imageUrlArr[index]:nil;
NSLog(@"imgPath = %@",imgPath);
decisionHandler(WKNavigationActionPolicyCancel);
} else {
decisionHandler(WKNavigationActionPolicyAllow);
}
}
3际歼、js方法
- (void)addImgClickJS {
//獲取所以的圖片標(biāo)簽
[self.wkWebView evaluateJavaScript:@"function getImages(){\
var imgs = document.getElementsByTagName('img');\
var imgScr = '';\
for(var i=0;i<imgs.length;i++){\
if (i == 0){ \
imgScr = imgs[i].src; \
} else {\
imgScr = imgScr +'***'+ imgs[i].src;\
} \
};\
return imgScr;\
};" completionHandler:nil];//注入js方法
__weak typeof(self)weakSelf = self;
[self.wkWebView evaluateJavaScript:@"getImages()" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
if (!error) {
NSMutableArray * urlArray = result?[NSMutableArray arrayWithArray:[result componentsSeparatedByString:@"***"]]:nil;
NSLog(@"urlArray = %@",urlArray);
weakSelf.imageUrlArr = urlArray;
} else {
weakSelf.imageUrlArr = nil;
}
}];
//添加圖片點(diǎn)擊的回調(diào)
[self.wkWebView evaluateJavaScript:@"function registerImageClickAction(){\
var imgs = document.getElementsByTagName('img');\
for(var i=0;i<imgs.length;i++){\
imgs[i].customIndex = i;\
imgs[i].onclick=function(){\
window.location.href='image-preview-index:'+this.customIndex;\
}\
}\
}" completionHandler:nil];
[self.wkWebView evaluateJavaScript:@"registerImageClickAction();" completionHandler:nil];
}