OC与JS交互

实现WebView代理方法


//网页加载完时调用

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

    

    //1.操作网页中的参数

      [self domHtml:webView];

    

   // 2.在iOS中加载HTML

      [self iOSforHtml:webView];   

}


//是否允许加载请求(拦截网址)

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


    //3.访问相册

    [self Visitphoto:request];


    //4.得到网页中的参数

    [self getHtmlCont:request];

       

    return YES;

}


操作网页中的参数(OC->JS)

OC提交JS请求.运行JS方法

====================Html代码====================


<html>

   <head>

      <meta charset="UTF-8">

   </head>

   <body>

      <p id="word">这是标题/p>

      <ul>

          <li class="change">你好</li>

          <li>我好</li>

          <li>大家好</li>

          <li>才是真的好</li>

      </ul>

   </body>

</html>


====================OC代码======================


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

    // 删除

    NSString *str1 = @"var word = document.getElementById('word');";

    NSString *str2 = @"word.remove();";

    //操作JavaScript

    [webView  stringByEvaluatingJavaScriptFromString:str1];

    [webView  stringByEvaluatingJavaScriptFromString:str2];

    

    // 更改

    NSString *str3 = @"var change = document.getElementsByClassName('change')[0];"

    "change.innerHTML = '好你的哦!';";

    [webView stringByEvaluatingJavaScriptFromString:str3];

    

    // 插入

    NSString *str4 =@"var img = document.createElement('img');"

    "img.src = 'img_01.jpg';"

    "img.width = '160';"

    "img.height = '80';"

    "document.body.appendChiJavaScriptld(img);";

    [webView stringByEvaluatingJavaScriptFromString:str4];

}


2.在iOS中加载HTML(OC->JS)---修改他人网页


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

    // 改变标题

    NSString *str1 = @"var h1 = document.getElementsByTagName('h1')[0];"

    "h1.innerHTML='CY鲜花网';";

    [webView stringByEvaluatingJavaScriptFromString:str1];

    

    //删除尾部

    NSString *str2 =@"document.getElementById('footer').remove();";

    [webView stringByEvaluatingJavaScriptFromString:str2];

    

    // 让scrollView显示

    self.wbView.scrollView.hidden = NO;

    self.activityView.hidden = YES;

    

    // 拿出所有的网页内容

    NSString *str3 = @"document.body.outerHTML";

    NSString *html = [webView stringByEvaluatingJavaScriptFromString:str3];

    NSLog(@"%@", html);

}


HTML访问相册(JS->OC)

JS提交请求到OC

====================Html代码====================


<html>

   <head>

      <meta charset="UTF-8">

   </head>

   <body>

      <button οnclick="getImage();">访问相册</button>

      

      <script>

          function getImage(){

             window.location.href = 'xmg://getImage';

          }

      </script>

   </body>

</html>


====================OC代码====================

-(void)Visitphoto:(NSURLRequest *)request{

    //截取请求

    NSString *str=request.URL.absoluteString;

    NSRange range=[str rangeOfString:@"xmg://"];

    if (range.location!=NSNotFound) {

        NSString *method=[str substringFromIndex:range.location+range.length];

        

        SEL sel=NSSelectorFromString(method);

        [self performSelector:sel];

    }

}


-(void)getImage{

    UIImagePickerController *imgVc=[[UIImagePickerController alloc]init];

    imgVc.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentViewController:imgVc animated:YES completion:nil];

}


得到html中的参数(JS->OC)

====================Html代码====================


<html>

   <head>

      <meta charset="UTF-8">

      <style>

          body{

              margin:20px;

          }

      </style>

   </head>

   <body>

       <p></p>

       <span>用户名</span>

       <input id="username">

       <p></p>

       <span>密码</span>

       <input id="pwd" type="password">

       <p></p>


      <button id="btn">登录</button>

      

      <script>

          var username = document.getElementById('username');

          var pwd = document.getElementById('pwd');

          var btn = document.getElementById('btn');

          

           btn.onclick = function(){

            var name = username.value; // 拿到用户名

            var password = pwd.value;

             //定义协议

             window.location.href = 'xmg://' + name + '?' + password;

          }

      </script>

   </body>

</html>


====================OC代码====================



-(void)getHtmlCont:(NSURLRequest *)request{

    

    //Html中自定义协议:window.location.href = 'xmg://' + name + '?' + password;

    //OC中通过截取字符串得到Html中相应的参数。

    

    //截取请求

    NSString *str=request.URL.absoluteString;

    NSRange range=[str rangeOfString:@"xmg://"];

    if (range.location!=NSNotFound) {

        NSString *method=[str substringFromIndex:range.location+range.length];

        NSLog(@"======[%@]",method);

    }

}

方法:


iOS开发,UIWebview与H5之间的交互

http://www.unjeep.com/q/841949662.htm

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值