javaScriptCore 的使用

首先我们在HTML里面定义一个标签。

 <!-- 定义一个事件 把需要传递的视图控制器的名字传过去-->

            <a id="push" href="#" οnclick="native.pushViewControllerWithTitle('CLDetailViewController','hello word');">

                你敢不敢点我</a>

我们要获取到这事件并且完成跳转。

在控制器中我们要这样写

 

#import <UIKit/UIKit.h>

#import <JavaScriptCore/JavaScriptCore.h>

 

@protocol TestJSExport <JSExport>

 

JSExportAs(calculateForJS,/** charlieCalculate 作为 js方法的别名*/ - (void)calculateNumber:(NSNumber*)number);

//跳转页面

- (void)pushViewController:(NSString*)viewControllerName withTitle:(NSString *)title;

 

 

@end

 

@interface HomeViewController : UIViewController<TestJSExport,UIWebViewDelegate>

 

@property (nonatomic ,strong) UIWebView * myWebview;

@property (nonatomic ,strong) JSContext * context;

 

@end

#pragma mark - UIWebViewDelegate

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

    // 以 html title 设置 导航栏 title

    self.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];

    // Undocumented access to UIWebView's JSContext

    self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    // 打印异常

    self.context.exceptionHandler =

    ^(JSContext *context, JSValue *exceptionValue)

    {

        context.exception = exceptionValue;

        NSLog(@"%@", exceptionValue);

    };

    // 以 JSExport 协议关联 native 的方法

    self.context[@"native"] = self;

    

    // 以 block 形式关联 JavaScript function

    self.context[@"log"] =

    ^(NSString *str)

    {

        NSLog(@"%@", str);

    };

  

}

//页面的跳转

-(void)pushViewController:(NSString *)viewControllerName WithTitle:(NSString *)title{

    

    Class second = NSClassFromString(viewControllerName);

    id secondVc = [[second alloc]init];

    NSLog(@"%@",title);

    ((UIViewController*)secondVc).title = title;

    [self.navigationController pushViewController:secondVc animated:YES];

    

}

 

 

 

 

 

转载于:https://my.oschina.net/CharlieHome/blog/672971

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值