UIWebView加载HTML,如何使网页中的图片可点击?

正常情况下,UIWebView中的内容是不能操作的(除了copy之类的),当然图片更不能操作,但是能不能实现点击图片来做一些其他处理呢?比如点击图片,跳转到单独显示该图片的页面,答案是肯定的,而且相当简单!这里用到了javascript。


第一步:UIWebView 加载要显示的html,可来自网络,也可来自本地。

[_webView loadHTMLString:htmlStringbaseURL:nil];


第二步:将javascript嵌入页面中

(1)[_webView stringByEvaluatingJavaScriptFromString:jsString];


这里的jsStirng是从工程中的js文件读取的,也可以直接写字符串(如果内容比较少的情况下)。js文件内容如下:

//setImage的作用是为页面的中img元素添加onClick事件,即设置点击时调用imageClick

function setImage(){

    var imgs = document.getElementsByTagName("img");

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

        var src = imgs[i].src;

        imgs[i].setAttribute("onClick","imageClick(src)");

    }

    document.location = imageurls;

}


//imageClick即图片 onClick时触发的方法,document.location = url;的作用是使调用

//webView: shouldStartLoadWithRequest: navigationType:方法,在该方法中我们真正处理图片的点击

function imageClick(imagesrc){

    var url="imageClick:"+imagesrc;

    document.location = url;

}

(2)网页加载完毕后,为img元素添加onClick事件,即onClick触发上述js文件中的setImage方法

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

    [_webView stringByEvaluatingJavaScriptFromString:@"setImage()"];

}

在webViewDidFinishLoad方法中为页面嵌入javascript代码。即调用上面js文件中的setImage方法。



第三步:处理点击事件

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

    NSString *requestString = [[request URL] absoluteString];

    NSArray *components = [requestString componentsSeparatedByString:@":"];

    if ([components count] >= 1) {

        //判断是不是图片点击

        if ([(NSString *)[componentsobjectAtIndex:0]isEqualToString:@"imageclick"]) {

            UIAlertView *alert = [[UIAlertViewalloc]

                                  initWithTitle:@"click"

                                  message:components[1]

                                  delegate:selfcancelButtonTitle:nil

                                  otherButtonTitles:@"OK",nil];

            [alert show];

            return NO;

        }

        return YES;

    }

    return YES;

}

我这里实现的只是点击图片弹出AlertView,你可以根据需求做其他任何处理!
至此,图片点击操作已经实现!

你可能感兴趣的:(JavaScript,ios,image,UIWebView,click)