截获webView点击事件

来源:互联网 发布:数的读法 c语言 编辑:程序博客网 时间:2024/05/18 23:58

后台返回的Web中如果有图片,超链接,而需求又要求我们点击图片放大,点击超链接打开网页,这时候就需要使用js代码来帮助我们实现这个功能了。


1.首先要实现webView 的代理方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    

   NSString *requestString = [[requestURL] absoluteString];

    

    if ([requestString hasPrefix:@"myweb:imageClick:"]) {

        

        NSString *imageUrl = [requestString substringFromIndex:@"myweb:imageClick:".length];

        

        NSLog(@"image url------%@", imageUrl);

        

        //创建视图并显示图片

        

        [self showBigImage:imageUrl];

        

        return NO;

        

    }

    

    if ([requestString hasPrefix:@"myweb:URLClick:"]) {

        

        NSString*url=[requestString substringFromIndex:@"myweb:URLClick:".length];

        

        NSLog(@"url-------%@",url);

        

        BannerWebViewController *webVC = [[BannerWebViewControlleralloc] init];

        

        webVC.url = url;

        

        [self.navigationControllerpushViewController:webVC animated:YES];

        

    }

    

    return YES;

}


2.在webViewDidFinishLoad方法里面调用js代码编写的方法来获取图片和超链接

- (void)webViewDidFinishLoad:(UIWebView *)webView{

   

    static  NSString * const jsGetImages =

    @"function getImages(){\

    var objs = document.getElementsByTagName(\"img\");\

    for(var i=0;i<objs.length;i++){\

    objs[i].onclick=function(){\

    document.location=\"myweb:imageClick:\"+this.src;\

    };\

    };\

    return objs.length;\

    };";

    

    [webView stringByEvaluatingJavaScriptFromString:jsGetImages];

    //注入js方法

    

    //注入自定义的js方法

    [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];

    

    

    

    static  NSString *const jsGetURls =

    @"function getUrls(){\

    var objs = document.getElementsByTagName(\"a\");\

    for(var i=0;i<objs.length;i++){\

    objs[i].onclick=function(){\

    document.location=\"myweb:URLClick:\"+this.href;\

    };\

    };\

    return objs.length;\

    };";

    

    

    [webView stringByEvaluatingJavaScriptFromString:jsGetURls];

    

    [webView stringByEvaluatingJavaScriptFromString:@"getUrls()"];

    

}




0 0
原创粉丝点击