IOS JS交互的方法

WKWebView  JS交互的基本步骤:

1:创建WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];

2:创建WKUserContentController *userContentController = [[WKUserContentController alloc] init];

3:[userContentController addScriptMessageHandler:self name:@"functionGetUserInfo(JS中的函数名)"];

4: configuration.userContentController = userContentController;

5:创建 self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration];

6:监听WKScriptMessageHandler中的 - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message方法,其中message.name可以的到函数名。

7:如果要将本地的数据传输给webView 则调用[self.webView evaluateJavaScript:[NSString stringWithFormat:@"hx.callback('%@');",dataStr] completionHandler:^(id _Nullable result, NSError * _Nullable error) {JWNSLog(@"%@", error);}]; 其中dataStr是要传输的json字符串。

8:dealloc 中remove掉之前的方法。[self.userContentController removeScriptMessageHandlerForName:@"functionGetUserInfo(JS中的函数名)"];


UIWebView  JS交互基本步骤:

1:在webViewDidFinishLoad方法中创建JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

2:创建具体的方法

context[@"functionPay(JS中函数名)"] = ^() {

        NSArray *args = [JSContext currentArguments];

        NSMutableArray *webPayArray = [NSMutableArray array];//webpayArray中储存的传递过来的所有数据

        for (JSValue *jsVal in args) {

                [webPayArray addObject:jsVal.toString];

        }

  };

3:如果要向JS中传递数据  [weakSelf.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"hx.callback('%@');",dataStr]];//dataStr为json字符串

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,171评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,768评论 8 265
  • 随着H5技术的兴起,在iOS开发过程中,难免会遇到原生应用需要和H5页面交互的问题。其中会涉及方法调用及参数传值等...
    Chris_js阅读 3,162评论 1 8
  • 跟原生开发相比,H5的开发相对来一个成熟的框架和团队来讲在开发速度和开发效率上有着比原生很大的优势,至少不用等待审...
    大冲哥阅读 1,876评论 0 7
  • 前言 Web 页面中的 JS 与 iOS Native 如何交互是每个 iOS 猿必须掌握的技能。而说到 Nati...
    幽城88阅读 2,264评论 1 8