IOS|IOS JS交互的方法
WKWebViewJS交互的基本步骤:
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中的函数名)"];
UIWebViewJS交互基本步骤:
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];
}
};
【IOS|IOS JS交互的方法】3:如果要向JS中传递数据[weakSelf.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"hx.callback('%@');
",dataStr]];
//dataStr为json字符串
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量