iOS开发中oc代码响应js网页点击事件的方法

在APP开发中我们经常碰到一种情况:app打开一个网页,网页里有些按钮需要我们去响应,比如打开一个游戏介绍的网页,点击网页中的“立即下载”按钮,app需要跳转到对应下载界面。那么我们怎么响应?代码如下:


-(void)makeWeb

{

    self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, self.view.frame.size.height - 200)];

    self.webView.backgroundColor = [UIColor whiteColor];

    self.webView.scalesPageToFit = YES;

    self.webView.delegate = self;

    

    NSString *webPath = [[NSBundle mainBundle] pathForResource:@"ocandjs" ofType:@"html"];

    NSURL *webURL = [NSURL fileURLWithPath:webPath];

    NSURLRequest *URLRequest = [[NSURLRequest alloc] initWithURL:webURL];

    [self.webView loadRequest:URLRequest];

    [self.view addSubview:self.webView];

    //核心方法如下

    JSContext *content = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    content[@"getUrl"] = ^() {

        NSLog(@"js调用oc---------begin--------");

        NSArray *thisArr = [JSContext currentArguments];

        for (JSValue *jsValue in thisArr) {

            NSLog(@"=======%@",jsValue);

            [[UIApplication sharedApplication]openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",jsValue]]];

        }

  

        NSLog(@"js调用oc---------The End-------");

        //[self.webView stringByEvaluatingJavaScriptFromString:@"show();"];

    };

}

这是app端的代码,代码通过

    JSContext *content = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    content[@"getUrl"] = ^() {

    };

这个方法来识别js代码中含有的 getUrl 名字的参数。


在html网页中,我们在点击按钮响应的的方法里做如下定义:

 function btnClick()

            {

                getUrl("http://www.baidu.com");

            }


注意:上面代码是网页端写的,其中 getUrl 与oc代码中content[@"getUrl"]对应,这样oc代码才能识别。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值