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
发表评论

3 条评论
  • 板凳 maidi 

    加载本地html文件确实没问题,但是从服务器获取的html就不行,WKScriptMessageHandler协议方法不执行

  • 椅子 你的灵兽看起来很好吃 

    虽然不知道说的是什么,但看起来好厉害的样子!

  • 沙发 丘八阅读网 

    文章不错,非常喜欢

相关文章
Objective-C IOS  JSON序列化,以及NSdata、NSString、NSDictionay之间的转换
Objective-C IOS JSON序列化,以及NSda…
Objective-C IOS  预处理 宏 #define
Objective-C IOS 预处理 宏 #define
Objective-C IOS UITextField的各种属性设置
Objective-C IOS UITextField的各种属性…
Objective-C IOS UITextField输入框下键盘显示
Objective-C IOS UITextField输入框下键…
MacBook MAC系统显示隐藏文件和.点开头文件方法
MacBook MAC系统显示隐藏文件和.点开头…
javaweb开发程序员php开发,微信开发。接受定制开发

最新评论