直接主題:Android或iOS webView圖片的點(diǎn)擊事件處理。
一、Android
1. webView自定義的webViewClient做如下處理
@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
addImageClickListner(view);
}
private void addImageClickListner(WebView contentWebView) {
// 這段js函數(shù)的功能就是,遍歷所有的img幾點(diǎn),并添加onclick函數(shù),函數(shù)的功能是在圖片點(diǎn)擊的時(shí)候調(diào)用本地java接口并傳遞url過(guò)去
contentWebView.loadUrl("javascript:(function(){" +
"var objs = document.getElementsByTagName(\"img\"); " +
"for(var i=0;i<objs.length;i++) " +
"{"
+ " objs[i].onclick=function() " +
" { "
+ " window.android.openImage(this.src); " +
" } " +
"}" +
"})()");
}
其中window.android.openImage(this.src);中的android為自定義標(biāo)識(shí)
2. webView
webView.addJavascriptInterface(new JSInterface(), "android");
其中JSInterface為自定義,android對(duì)應(yīng)webViewClient中的window.android.openImage()
3. JSInterface中代碼
public class JSInterface {
public JSInterface() {
}
@JavascriptInterface
public void openImage(String img) {
// img即獲取到圖片的點(diǎn)擊事件,該如何處理自己看著需求。
Intent intent = new Intent(getActivity(), PhotoViewActivity.class);
intent.putExtra((PhotoViewActivity.Intent_PhotoViewActivity_photo, img);
startActivity(intent);
}
}
二、iOS
兩個(gè)UIWebView代理的使用:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"javascript:(function(){ var objs = document.getElementsByTagName(\"img\"); for(var i=0;i<objs.length;i++) { objs[i].onclick=function() { window.location.href= \"iOS://openImage:/\" + this.src} }})()"];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [[request URL] absoluteString];
NSArray *urlComps = [urlString componentsSeparatedByString:@"://"];
if([urlComps count] && [[urlComps objectAtIndex:0] isEqualToString:@"iOS"])
{
NSString *funcStr = [urlComps objectAtIndex:1];
if ([funcStr containsString:@"openImage"]) {
NSString *imgSrc = [urlComps objectAtIndex:2];
// imgUrl即為圖片地址
NSString *imgUrl = [NSString stringWithFormat:@"http://%@", imgSrc];
}
return NO;
}
return YES;
}
注:兩個(gè)代理中"iOS"為標(biāo)識(shí)