OC中调用JS

来源:互联网 发布:python 列表内元组 编辑:程序博客网 时间:2024/05/01 12:01

从iOS7开始 苹果公布了JavaScriptCore.framework,使得JS与OC的交互更加方便.
首先导入JavaScriptCore.framework框架.
点击 Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework,选中JavaScriptCore.framework后 点击右下角Add 添加完成,创建一个UIWebView 用来测试.
/* 测试代码如下 */

#import "ViewController.h"#import <JavaScriptCore/JavaScriptCore.h>#define KSCREENSIZE [UIScreen mainScreen].bounds.size@interface ViewController ()<UIWebViewDelegate>@property(nonatomic,weak) UIWebView *testWebView;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // 初始化webView    UIWebView *testWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, KSCREENSIZE.width, KSCREENSIZE.height)];    // 添加webView到当前的viewController的view上    [self.view addSubview:testWebView];    self.testWebView = testWebView;    testWebView.delegate = self;    // 网址    NSString *httpStr = @"https://www.baidu.com";    NSURL *httpUrl = [NSURL URLWithString:httpStr];    NSURLRequest *httpRequest = [NSURLRequest requestWithURL:httpUrl];    [testWebView loadRequest:httpRequest];}#pragma mark - UIWebView的代理方法- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{    // 网页加载之前会调用这个方法    // return YES 表示正常加载网页 返回 NO 将停止加载网页    return YES;}- (void)webViewDidStartLoad:(UIWebView *)webView{    // 开始加载网页时调用}- (void)webViewDidFinishLoad:(UIWebView *)webView{    // 网页加载完成时调用    // MARK: - OC调用JS    // 首先创建JSContext 对象 (此处通过当前webView的键获取到就是从jscontext)    JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];    // 准备执行的js代码    NSString *alertJS = @"alert('Warning')";    // 通过OC方法调用js的alert    [context evaluateScript:alertJS];}- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{    // 网页加载失败 会调用}

/* 运行效果如下 */
完成
END

0 0
原创粉丝点击