- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iOS开发中使JavaScriptCore实现Objective-C和JavaScript的相互调用
iOS开发中使用JavaScriptCore实现Objective-C和JavaScript的相互调用
最近看了一个对Github上面编程语言使用统计的[排行榜] / ,JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程语言都提供了跟JavaScript进行交互的接口,这一点在iOS开发中也不例外。
iOS7以前,在App中调用JavaScript的方式只有一种,就是通过UIWebView对象的stringByEvaluatingJavaScriptFromString:方法。由于UIWebView中包含了CSS渲染引擎和JavaScript执行引擎(说白了就是微型一个浏览器),因此这个方法可以让UIWebView通过它的JavaScript运行时环境执行JavaScript代码,但是能做的事情非常有限,我们可以先看看下面的例子。
- void webViewDidFinishLoad: UIWebView * webView // 获得UIWebView中加载页面的标题 NSString *title [webView stringByEvaluatingJavaScriptFromString: @document.title]; NSLog @%@, title ; // 获得UIWebView中加载页面的链接地址 NSString *urlStr [webView stringByEvaluatingJavaScriptFromString: @location.href]; NSLog @%@, urlStr ; 从iOS7开始,我们可以使用JavaScriptCore框架来让我们的Objective-C代码和JavaScript进行深度交互,简单的说我们可以在Objective-C代码中访问JavaScript中的变量或调用JavaScript的函数,也可以JavaScript中使用Objective-C的对象和方法。我们可以先看一个简单的例子。
先加入JavaScriptCore的头文件。
#import
在Objective-C中使用JavaScript的正则表达式验证字符串。
// 创建JavaScript执行环境 上下文
JSContext *context [[JSContext alloc] init];
NSString *funCode @var isValidNumber function phone
var phonePattern /^1[34578]\\d 9 $/;
return phone.match phonePattern ;
;;
// 执行上面的JavaScript代码
[context evaluateScript:funCode];
// 获得isValidNumber函数并传参调用
JSValue *jsFunction context[@isValidNumber];
JSValue *value1 [jsFunction callWithArguments:@[ @1座机电话号码78 ]];
NSLog @%@, [value1 toBool]? @有效: @无效 ; // 有效
JSValue *value2 [jsFunction callWithArguments:@[ @1座机电话号码99 ]];
NSLog @%@, [value2 toBool]? @有效: @无效 ; // 无效
在Objective-C中调用JavaScript函数求阶乘。
// 创建JavaScript执行环境 上下文
JSContext *context [[JSContext alloc] init];
// 可以将一个block传给JavaScript上下文
// 它会被转换成一个JavaScript中的函数
context[@factorial] ^ int x double result 1.0; for ; x 1; x-- result * x; return result;
;
// 执行求阶乘的函数
[context evaluateScript:@var num factorial 5 ;];
JSValue *num context[@num];
NSLog @5! %@, num ; // 5! 120
```
JavaScript和Objective-
您可能关注的文档
最近下载
- 铁路通信工(技师)技能鉴定理论考试题及答案.doc VIP
- 党建与银行业务综合知识试卷真题及答案.docx VIP
- 2025年女性健康食品饮料趋势报告.pdf VIP
- 智能化工程售后服务方案.docx VIP
- 中国行业标准 YC/T 590-2021卷烟工业企业设备综合效率测评导则.pdf
- 铁路通信工(初级)技能鉴定理论考试题及答案.doc VIP
- (高清版)B-T 18380.12-2022 电缆和光缆在火焰条件下的燃烧试验 第12部分:单根绝缘电线电缆火焰垂直蔓延试验 1kW预混合型火焰试验方法.pdf VIP
- 化妆品包材行业基础知识.pdf VIP
- 校园文化建设服务承诺及质量保障措施.doc VIP
- 化验工题库.doc VIP
文档评论(0)