ios开发中使用javascriptcore实现objective-c和javascript的相互调用

ios开发中使用javascriptcore实现objective-c和javascript的相互调用

ID:8970443

大小:87.00 KB

页数:8页

时间:2018-04-13

ios开发中使用javascriptcore实现objective-c和javascript的相互调用_第1页
ios开发中使用javascriptcore实现objective-c和javascript的相互调用_第2页
ios开发中使用javascriptcore实现objective-c和javascript的相互调用_第3页
ios开发中使用javascriptcore实现objective-c和javascript的相互调用_第4页
ios开发中使用javascriptcore实现objective-c和javascript的相互调用_第5页
资源描述:

《ios开发中使用javascriptcore实现objective-c和javascript的相互调用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、http://www.mobiletrain.org/iOS开发中使用JavaScriptCore实现Objective-C和JavaScript的相互调用最近看了一个对Github上面编程语言使用统计的[排行榜](http://githut.info/),JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程语言都提供了跟JavaScript进行交互的接口,这一点在iOS开发中也不例外。iOS7以前

2、,在App中调用JavaScript的方式只有一种,就是通过UIWebView对象的stringByEvaluatingJavaScriptFromString:方法。由于UIWebView中包含了CSS渲染引擎和JavaScript执行引擎(说白了就是微型一个浏览器),因此这个方法可以让UIWebView通过它的JavaScript运行时环境执行JavaScript代码,但是能做的事情非常有限,我们可以先看看下面的例子。-(void)webViewDidFinishLoad:(UIWebView*)webView{//获得UIWebView中加载页面的标题NSString*title

3、=[webViewstringByEvaluatingJavaScriptFromString:@"document.title"];NSLog(@"%@",title);//获得UIWebView中加载页面的链接地址NSString*urlStr=[webViewstringByEvaluatingJavaScriptFromString:@"location.href"];NSLog(@"%@",urlStr);}从iOS7开始,我们可以使用JavaScriptCore框架来让我们的Objective-C代码和北京千锋互联科技有限公司版权所有http://www.mobiletra

4、in.org/JavaScript进行深度交互,简单的说我们可以在Objective-C代码中访问JavaScript中的变量或调用JavaScript的函数,也可以JavaScript中使用Objective-C的对象和方法。我们可以先看一个简单的例子。先加入JavaScriptCore的头文件。#import在Objective-C中使用JavaScript的正则表达式验证字符串。//创建JavaScript执行环境(上下文)JSContext*context=[[JSContextalloc]init];NSStr

5、ing*funCode=@"varisValidNumber=function(phone){""varphonePattern=/^1[34578]\d{9}$/;""returnphone.match(phonePattern);""};";//执行上面的JavaScript代码[contextevaluateScript:funCode];//获得isValidNumber函数并传参调用JSValue*jsFunction=context[@"isValidNumber"];JSValue*value1=[jsFunctioncallWithArguments:@[@"1301

6、2345678"]];NSLog(@"%@",[value1toBool]?@"有效":@"无效");//有效北京千锋互联科技有限公司版权所有http://www.mobiletrain.org/JSValue*value2=[jsFunctioncallWithArguments:@[@"12345678899"]];NSLog(@"%@",[value2toBool]?@"有效":@"无效");//无效在Objective-C中调用JavaScript函数求阶乘。//创建JavaScript执行环境(上下文)JSContext*context=[[JSContextalloc]in

7、it];//可以将一个block传给JavaScript上下文//它会被转换成一个JavaScript中的函数context[@"factorial"]=^(intx){doubleresult=1.0;for(;x>1;x--){result*=x;}returnresult;};//执行求阶乘的函数[contextevaluateScript:@"varnum=factorial(5);"];JSValue*num=context[@"nu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。