webView加载的图片添加点击事件

  第一步:创建一个webView

    UIWebView *web=[[UIWebView alloc]initWithFrame:self.view.bounds];

    web.center=self.view.center;

    web.scalesPageToFit=YES;

    web.delegate=self;

    [web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.cocoachina.com/programmer/20160113/14976.html"]]];

    [self.view addSubview:web];


第二步:为图片添加点击事件(实现两个协议方法)

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

    if ([request.URL.scheme hasPrefix:@"xsq-image"]) {

        // 获取原始图片的完整URL

        NSString *src = [request.URL.absoluteString stringByReplacingOccurrencesOfString:@"xsq-image:" withString:@""];

        if (src.length > 0) {

            // 原生API展开图片

            // 这里已经拿到所点击的图片的URL了,剩下的部分,自己处理了

            // 有时候会感觉点击无响应,这是因为webViewDidFinishLoad,还没有调用。

            // 调用很晚的原因,通常是因为H5页面中有比较多的内容在加载

            // 因此,若是原生APPH5要交互,H5要尽可能地提高加载速度

            // 不相信?在webViewDidFinishLoad加个断点就知道了

            NSLog(@"所点击的HTML中的img标签的图片的URL为:%@", src);

        }

    }

    return YES;


}

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

    NSString *js = @"function addImgClickEvent() { \

    var imgs = document.getElementsByTagName('img'); \

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

    var img = imgs[i]; \

    img.onclick = function () { \

    window.location.href = 'xsq-image:' + this.src; \

    }; \

    } \

    }";

    // 注入JS代码

    [webView stringByEvaluatingJavaScriptFromString:js];

    // 执行所注入的JS代码

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

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值