IOS----OC调用JS并获得返回值

本demo是自己所做的 OC调用JS功能的一个简单的例子。


1、准备一个本地化的html网页,我用的是以前做的计算器网页, JavaScript计算机.html

<!DOCTYPE html>
<html class="um landscape min-width-240px min-width-320px min-width-480px min-width-768px min-width-1024px">
    <head>
        <title>javascript计算机demo</title>
        <meta charset="utf-8">
        <meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
        <link rel="stylesheet" href="css/fonts/font-awesome.min.css">
        <link rel="stylesheet" href="css/ui-box.css">
        <link rel="stylesheet" href="css/ui-base.css">
        <link rel="stylesheet" href="css/ui-color.css">
        <link rel="stylesheet" href="css/appcan.icon.css">
        <link rel="stylesheet" href="css/appcan.control.css">
        
  
    <script language="JavaScript">
   
    </script>
       
    </head>
    <body>
    
  
    </body>
    <form action="" method="post" name="myform" id="myform">
    <p>第一个数
    <input name="num1" type="text" id="num1" size="25">
    <br />
    第二个数
    <input name="num2" type="text"  id="num2" size="25">
    </p>
    <p>
    <input name="addButton" type="button" id="addButton" value="+"  οnclick="comput('+')">
    <input name="subButton" type="button" id="subButton" value="-"  οnclick="comput('-')">
    <input name="multButton" type="button" id="multButton" value="X"  οnclick="comput('*')">
    <input name="divButton" type="button" id="divButton" value="➗"  οnclick="comput('/')">
    </p>
    <p>
    计算结果
    <input name="result" type="text" id="result" size="25" >
    </p>
    </form>
    <script>
    function comput(op){
   var num1 =0;
   var num2 =0;
   num1 = parseFloat(document.myform.num1.value)
   num2 = parseFloat(document.myform.num2.value)
   comput2(num1,num2,op);
   }
   function comput2(num1,num2,op){
   if(op == "+")
   document.myform.result.value = num1+num2;
   if(op == "-")
   document.myform.result.value = num1-num2;
   if(op == "*")
   document.myform.result.value = num1*num2;
   if(op == "/" && num2!=0)
   document.myform.result.value = num1/num2;
   return document.getElementById("result").value;
   }
    </script>
</html>
2、将此html文件放到项目代码目录里面,如图:


3、拖一个UIWebView控件和UIButton控件和一个UILable控件到xxxViewController对应的.xib或.storyboard视图的UIView上;

分别添加属性以及button的点击事件,并且添加一个UIWebViewDelegate类型的代理。(如图所示)


代理直接在xib中拖线即可;


4、在xxxViewController.m文件中实现通过点击事件,调用javaScript的方法并取得返回值。

代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    _MyWeb.backgroundColor = [UIColor clearColor];
    //webview.scalesPageToFit =YES;
    //找到<span style="font-size:18px;">JavaScript计算机.html</span>文件的路径
    NSString *basePath = [[NSBundle mainBundle]bundlePath];
    NSString *helpHtmlPath = [basePath stringByAppendingPathComponent:@"JavaScript计算机.html"];
    NSURL *url = [NSURL fileURLWithPath:helpHtmlPath];
    //加载本地html文件
    [_MyWeb loadRequest:[NSURLRequest requestWithURL:url]];
    
}

- (IBAction)js_ios:(UIButton *)sender {
    NSString *str1 = [self.MyWeb stringByEvaluatingJavaScriptFromString:@"comput2();"];
//    NSLog(@"JS返回值:%@",str1);
    NSString *str2 =[NSString stringWithFormat:@"JS返回值:%@",str1];
// 在lable上展示
    self.MyLable.text = str2;
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
最终效果如图所示:




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值