网上的教程你复制我,我复制你,特别容易误导像我这样的新手,好不容易找到一个方法,却因为 网上给的js代码用了系统的click方法,导致一直无效。
网页中图片的节点是 img,利用js 得到图片节点下的所有地址,并且为每一个图片添加点击事件
点击时,触发一个url,即图片的地址。
利用uiwebview代理,得到地址,并进行一个后续的一个处理。
step 1: 准备js文件
function setImageClickFunction(){
var imgs = document.getElementsByTagName("img");
for (var i=0;i<imgs.length;i++){
var src = imgs[i].src;
imgs[i].setAttribute("onClick","getImg(src)");
}
document.location = imageurls;
}
function getImg(src){
var url=src;
document.location = url;
}
step 2 加载js文件
web = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
web.delegate = self;
[web setScalesPageToFit:NO];
web.scrollView.alwaysBounceVertical=YES;
web.userInteractionEnabled=YES;
[web stringByEvaluatingJavaScriptFromString:[NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"findImg" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil]];
web.scrollView.scrollEnabled=NO;
[web sizeToFit];
[scrollView addSubview:web];
当uiwebview结束加载时,调用js的方法
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"setImageClickFunction()"];
}
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *path=[[request URL] absoluteString];
NSLog(@"%@",path);
if([path rangeOfString:@"http://qiniudn.com"].location !=NSNotFound)
{
[self getNewImgview:path];
return NO;
}
else
{
return YES;
}
}
最后用于得到uiwebview所有的链接,yes no 决定是否跳转,判断条件可以用jpg,png后缀做判断
这样在uiwebview中点击图片,会得到图片的url