OC 和JS的交互

 oc 和JS 交互 主要是用到UIWebView 的这个方法 - (nullableNSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; 去调用JS,下面为大家演示一个小demo。显示结果为:



首先,自己写一个Html 网页,放到空文件中,不会写的可以在网页上 下一个,或者到 W3school 去 找一个demo,,再不会写的,看下面:

<html>

    <head>

        <title>JSOC的交互</title>

        <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">

            <script>

                function test()

                {

                    alert("JSOC的交互");

                    return"交互成功";

                }

            </script>

            <body>

                

                <br/>

                <br/>

                <br/>

                <a href='ios://openMyAlbum'>打开相机</a><br/>

                <a href='ios://openBaidu'>打开百度</a>

                <a href = 'ios://openMyCamera'>打开相册</a>

                

                

                

                <svg xmlns="http://www.w3.org/2000/svg"version="1.1"height="190">

                    <polygonpoints="100,10 40,180 190,60 10,60 160,180"

                    style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />

                </svg>


                

                

            </body>

            

</html>




接着在试图控制器中写入下面方法就可:

  _webView = [[UIWebViewalloc] initWithFrame:self.view.bounds];

    [self.viewaddSubview:_webView];

    

    NSString *path = [[NSBundlemainBundle] pathForResource:@"text.html"ofType:nil];

    

    NSURL *url = [NSURLfileURLWithPath:path];

    NSURLRequest *req = [[NSURLRequestalloc] initWithURL:url];

    

    _webView.delegate   =self;

    _webView.dataDetectorTypes  =UIDataDetectorTypeAll;

    

    [_webViewloadRequest:req];

    

}


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

    

    NSString *title = [webViewstringByEvaluatingJavaScriptFromString:@"document.title"];

    

    NSString *url = [webViewstringByEvaluatingJavaScriptFromString:@"document.location.href"];

    

    NSLog(@"title=%@,url=%@",title,url);

    

    NSString *urlstr = request.URL.absoluteString;

    NSLog(@"%@",urlstr);

    

    NSRange range = [urlstrrangeOfString:@"ios://"];

    

    if(range.length!=0)

    {

        

        NSString *method = [urlstrsubstringFromIndex:(range.location+range.length)];

        

        SEL selctor =NSSelectorFromString(method);

   

        [selfperformSelector:selctor withObject:nilafterDelay:1.0];

        

        

    }

    

 

    returnYES;

    

}






-(void)openMyAlbum


{

    

    UIImagePickerController

    

    *vc = [[UIImagePickerController

            

            alloc]init];

    

    vc.sourceType

    

    = UIImagePickerControllerSourceTypePhotoLibrary;

    

    [self

     

     presentViewController:vc

     

     animated:YES

     

     completion:nil];

    

}




-(void)openMyCamera


{

    

     

}


-(void)openBaidu{

    

    

    [_webViewstringByEvaluatingJavaScriptFromString:@"test();"];

    

    return;


    

    

    

    

}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值