[IOS]Uiwebview+js,点击图片得到地址

网上的教程你复制我,我复制你,特别容易误导像我这样的新手,好不容易找到一个方法,却因为 网上给的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;
    
}


将文件保存为js后缀,加入工程


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

猜你喜欢

转载自blog.csdn.net/w250130255/article/details/43016201