IOS开发wkwebview与HTML页面JS互相交互的干货

由于IOS开发中需要引入html作为模板使用,与HTML中的JS进行互相传值交互,实现互通的功能。基本代码如下。

初始化设置代码

// WKWebView的配置
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
// js配置
config.userContentController = [[WKUserContentController alloc]init];
[config.userContentController addScriptMessageHandler:self name:@"getErrorPaperInfo"];

// 显示WKWebView
_webV = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) configuration:config];
_webV.allowsBackForwardNavigationGestures = YES;
// 代理
_webV.navigationDelegate = self;
_webV.scrollView.delegate = self;
[self addSubview:_webV];

// 加载本地html文件
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"merrorpaper" ofType:@"html"];
NSURL *pathURL = [NSURL fileURLWithPath:filePath];
[_webV loadRequest:[NSURLRequest requestWithURL:pathURL]];

//WKScriptMessageHandler协议方法 监听JS调用ios方法
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
//code message.name 方法名 message.body 回调值
if ([message.name isEqualToString:@"getErrorPaperInfo"]) {
NSString *error_id = message.body;
}
}
//IOS调用JS的方法
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
[_webV evaluateJavaScript:[NSString stringWithFormat:@"javascript:setErrorPage('%@')",str] completionHandler:nil];

}

HTML代码

window.webkit.messageHandlers.getErrorPaperInfo.postMessage('{{id}}')     window.webkit.messageHandlers.[方法名].postMessage([参数])

iso调用js方法 方法名(参数) getErrorPaperInfo([参数])

IOS开发wkwebview与HTML页面JS互相交互的干货-上流阁

*文章为作者独立观点,不代表上流阁立场
本文由 江风成 授权 上流阁 发表,并经上流阁编辑。转载此文章须经作者同意,并请附上出处(上流阁)及本页链接。原文链接https://www.o6c.com/ios/2018/07/26/1128.html
发表评论

2 条评论
相关文章
没有相关文章!
javaweb开发程序员php开发,微信开发。接受定制开发

最新评论