美文网首页iOS网络篇iOS开发资源iOS开发
[IOS]Uiwebview+js交互 之图片点击事件

[IOS]Uiwebview+js交互 之图片点击事件

作者: KKKKaras | 来源:发表于2015-09-01 15:34 被阅读2206次

    刚参加工作的时候,在csdn上写过类似的文章,今天维护代码,觉得还是有一点点价值的,特来分享一下,大家多拍砖。

    准备js文件

    functionsetImageClickFunction(){

    varimgs = document.getElementsByTagName("img");

    for(vari=0;i

    varsrc = imgs[i].src;

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

    }

    document.location = imageurls;}

    functiongetImg(src){

    varurl=src;

    document.location = url;

    }

    这段js代码的作用是遍历网页源码中“img” 节点,并为每个节点添加一个事件。

    - (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    UIWebView*web=[[UIWebViewalloc]initWithFrame:self.view.frame];

    [self.viewaddSubview:web];

    web.delegate=self;

    [webstringByEvaluatingJavaScriptFromString:[NSStringstringWithContentsOfURL:[[NSBundlemainBundle]URLForResource:@"Findimg"withExtension:@"js"]encoding:NSUTF8StringEncodingerror:nil]];

    [webloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.jianshu.com/p/316631f145d6"]]];

    }

    -(void)webViewDidFinishLoad:(UIWebView*)webView

    {

    [webViewstringByEvaluatingJavaScriptFromString:@"setImageClickFunction()"];

    }

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

    {

    NSString*path=[[requestURL]absoluteString];

    NSLog(@"%@",path);

    if([pathrangeOfString:@"jpg"].location!=NSNotFound)//添加关键字进行是否跳转的筛选

    {

    ImgShowViewController* img=[[ImgShowViewControlleralloc]init];

    img.imgUrl=path;

    [selfpresentViewController:imganimated:YEScompletion:nil];

    returnNO;

    }

    else

    {returnYES;

    }

    }

    让webview加载定义好的js文件 在完成的时候,stringByEvaluatingJavaScriptFromString方法嵌入页面中


    最后用于得到uiwebview所有的链接,yes  no  决定是否跳转,判断条件可以用jpg,png后缀做判断

    这样在Uiwebview中点击图片,会得到图片的url之后就交给你了~~

    9/14 更新:如果嵌套在tableView中,记得将该cell 设置为

    cell.selectionStyle=UITableViewCellSelectionStyleNone;

    相关文章

      网友评论

      • wolf_silence:如果js是写在后端服务器上呢,怎么来实现与oc交互
      • Eggman:正确的 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)");
        }

        }

        function getImg(src){

        var url = src;

        document.location = url;

        }
        KKKKaras:@Eggman 嗯 js的代码贴的不是很习惯 下次改正
      • Eggman:尝试在嵌套与 UITableViewCell 中的 UIWebView 里使用,但没触发效果。
        KKKKaras:@Eggman 谢评:) 方法已经更新到文章中
        KKKKaras:@Eggman 点击冲突 放webview的cell 设置不能点击。

      本文标题:[IOS]Uiwebview+js交互 之图片点击事件

      本文链接:https://www.haomeiwen.com/subject/qrklcttx.html