在web端進行圖片點擊,就比較簡單的往圖片標簽里面注冊一個onclick方法
1、在didFinish中注冊
//這個是網頁加載完成,導航的變化
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
[self addImgClickJS];
}
2、在加載web端的時候攔截,那里打印的imgPath
就是點擊的圖片
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
// 類似 UIWebView 的 -webView: shouldStartLoadWithRequest: navigationType:
//預覽圖片
NSURL * url = navigationAction.request.URL;
if ([url.scheme isEqualToString:@"image-preview-index"]) {
//圖片點擊回調
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 {
//獲取所以的圖片標簽
[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;
}
}];
//添加圖片點擊的回調
[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];
}