1. 程式人生 > >[IOS]Uiwebview+js,點選圖片得到地址

[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