OC中调用JS

本文介绍了从iOS7开始引入的JavaScriptCore.framework,该框架使得Objective-C(OC)与JavaScript(JS)之间的交互变得更加便捷。通过导入框架并创建UIWebView,开发者可以轻松实现两者间的通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值