WKWebview的使用总结

最近用到WKWebview来实现项目中H5字段的加载功能,遇到很多问题,总结并学习一下;
实现功能: 使用WKWebview加载h5字段,获取页面点击事件
为方便对比,贴出后台返回的h5字段

版本更新公告 V1.3.60 

1.更换开屏页图片 

2.新增广告页图片 

3.增加更新公告说明 

4.修复书籍详情页书名不全问题 

5.修复电子书阅读记录储存问题 

6.修复有声书断点续播问题 

7.修复社区发帖空格、换行问题 

8.修复安卓切屏显示问题 

9.修改浏览记录删除问题 

10.修改注册页登录按钮样式 

11.修改退出登录重新选择标签问题 

12.修改社区推荐逻辑

点击跳转

问题一:WKWebView 使用 loadHTMLString:baseURL:
加载h5字符,字体很小,在网上找了很多方法最后使用

NSString *htmlStr = [NSString stringWithFormat:@"
%@",[alertControllerMessageStr string]]; [webView loadHTMLString:htmlStr baseURL:nil];

解决

问题二:加载的h5字符中 有点击事件,点击根据JS传递的方法参数在APP决定跳转到那个页面,这里使用到 WKUserContentController的addScriptMessageHandler标识出 的方法一定要和 h5中
window.webkit.messageHandlers.goDetails.postMessage(1);
goDetails 一致

    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init];
    configuration.userContentController = [WKUserContentController new];
    [configuration.userContentController addScriptMessageHandler:self name:@"goDetails"];
    WKWebView *webView = [[WKWebView alloc]initWithFrame:CGRectMake(0, 40, alertView.width, alertView.height - 101) configuration:configuration];
    webView.navigationDelegate = self;
    webView.UIDelegate = self;
    webView.scrollView.bounces = NO;
    NSString *htmlStr = [NSString stringWithFormat:@"
%@",[alertControllerMessageStr string]]; [webView loadHTMLString:htmlStr baseURL:nil]; [alertView addSubview:webView];

然后在

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"goDetails"]) {
       NSLog(@"这是JS传递的参数 %@",message.body);
    }
}

就可以获取到JS 传递的参数了
另外:刚开始后台传递的h5字段中没有js代码,是把方法 window.webkit.messageHandlers.goDetails.postMessage(1); 写在onclick后面的,在app中也可以获取到点击事件传递的参数

参考文章:https://www.jianshu.com/p/a29c7d314cbf?utm_campaign

有问题请留言,我会及时更正,谢谢。

你可能感兴趣的:(WKWebview的使用总结)