JavaScriptCore JavaScriptCore是webkit的一个重要组成部分,主要是对JS进行解析和提供执行环境。iOS7后苹果在iPhone平台推出,极大的方便了我们对js的操作。 首先创建webView,读取本地的html文件 NSURL* htmlURL = [[NSBundle mainBundle] URLForResource: @"demo" withExtension: @"html"]; [_webView loadRequest: [NSURLRequest requestWithURL: htmlURL]]; 在demo中,我们要实现4种情况 JS调 JavaScriptCore是WebKit引擎的核心部分,专门负责JavaScript代码的解析与执行环境。自iOS 7起,苹果将其引入到iPhone平台上,极大地简化了Objective-C(简称OC)与JavaScript之间的交互。这个框架使得原生应用能够直接调用JavaScript代码,反之亦然,从而在两者之间建立了一座桥梁。 为了实现OC与JS的交互,我们需要创建一个UIWebView实例来加载HTML文件。例如,我们可以这样加载本地的“demo.html”文件: ```objc NSURL* htmlURL = [[NSBundle mainBundle] URLForResource: @"demo" withExtension: @"html"]; [_webView loadRequest: [NSURLRequest requestWithURL: htmlURL]]; ``` 在这个“demo.html”文件中,我们定义了几个JavaScript函数,以便在不同的场景下与OC进行通信: 1. `showAlert()`:无参数的JavaScript函数,用于展示一个简单的警告对话框。 2. `showAlertWithString(string)`:接受一个字符串参数,然后在警告对话框中显示该字符串。 3. `callOCWithArgument(arg1, arg2, arg3)`:调用OC中的方法,并传递三个参数。 在OC中,我们需要实现UIWebView的代理方法`webViewDidFinishLoad:`,在这个方法中,我们可以获取到JavaScript上下文(JSContext),它是与JavaScript进行交互的关键: ```objc - (void)webViewDidFinishLoad:(UIWebView *)webView { _context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; __weak typeof(self) weakSelf = self; _context.exceptionHandler = ^(JSContext *context, JSValue *exception) { weakSelf.context.exception = exception; }; } ``` 为了使JavaScript能够调用OC的方法,我们需要将OC的方法绑定到JSContext上。例如,如果我们有一个OC方法`callOC`,可以这样做: ```objc _context[@"callOC"] = ^() { NSArray *args = [JSContext currentArguments]; // 处理传入的参数并执行相应的操作 }; ``` 同样,对于带有参数的方法`jsCallOCWithArgument`,我们可以这样处理: ```objc _context[@"jsCallOCWithArgument"] = ^() { NSArray *args = [JSContext currentArguments]; NSMutableString *string = [NSMutableString string]; for (JSValue *value in args) { [string appendFormat:@"%@", value.toString]; } // 使用接收到的参数执行相应的操作 }; ``` 通过这种方式,JavaScript中的按钮点击事件可以触发这些函数,进而调用OC的方法或传递数据。这使得我们可以利用JavaScript的灵活性来增强原生应用的功能,同时保留OC的强大性能和稳定性。 JavaScriptCore为iOS开发者提供了强大的能力,允许他们在原生应用中无缝集成JavaScript代码,实现更丰富的用户界面和交互逻辑。无论是简单的数据传递还是复杂的业务逻辑处理,JavaScriptCore都是一个值得掌握的重要工具。通过熟练运用,开发者可以创造出既美观又功能丰富的iOS应用。




















- 粉丝: 9
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机复位电路的可靠性研究分析.doc
- 基于物联网的智能物流仓储系统.ppt
- 农业物联网项目可行性研究报告模板.docx
- 交换专业最终版江苏初通信工程师考试.doc
- MATLAB仿真在其它领域中应用.doc
- TCP协议的简单即时通信软件的设计方案与实现.doc
- 基于51单片机的双机串行通信课程设计.doc
- (含参考答案)浙江大学城市学院试卷(Java高级程序设计方案).doc
- 仪表自动化培训大纲.docx
- 例谈生物课堂网络学习的设计.docx
- 东北大学接口技术课程设计.docx
- 医药数据库管理与应用.docx
- 初步认识计算机教学.doc
- 手机:从移动通话工具向移动网络媒体的嬗变.docx
- 网络经济时代企业财务管理模式分析.docx
- 单片机粮仓温湿度监测系统设计方案开题报告(软件).doc


