用了一年wkwebview中遇到的坑
来源:互联网 发布:深圳中科软件 编辑:程序博客网 时间:2024/06/01 10:51
在ios10中,公司的一些页面一直抽风式的加载不出来,直接报错证书验证失败,和后台调了一天,也没找到是什么原因,于是在wkwebview上试了下,擦了个擦,竟然没有任何问题,带着无奈以及无奈,只好做了一个兼容7.0的uiwebview和8.0以后的wkwebview的浏览器,其中痛苦过程就不再说了,新的wkwebview还要兼容旧的协议,幸好uiwebview的app web交互协议都是自己实现的,只需要做好wkwebview的协议的兼容性就好。以为就会顺利的,高高兴兴的,愉快的用wkwebview了,然后就上线了,然后就出现了一些崩溃,幸亏只是偶先,一个版本一个版本的修复。
1 打开新的页面 _target = blank 在打开新的页面的时候,需要自己处理怎么处理,如果不对blank便签处理,程序会崩溃
处理方式:
- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures{ WKFrameInfo *frameInfo = navigationAction.targetFrame; if (![frameInfo isMainFrame]) { [webView loadRequest:navigationAction.request]; } return nil;}
2 长按图片存储图片 在wkwebview中,长按图片可以弹出一个是存储还是复制的框,如果不对相应的JS代码做处理,会引起崩溃,可以直接禁用长按功能
//禁止长按弹出选择框
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{ [self.swipeWebView evaluateJavaScript:@"document.documentElement.style.webkitTouchCallout='none';" completionHandler:^(id object, NSError * error) { }];}
3 wkwebview无法主动打开appstore 解决方法如下
- (void)swipewebView:(WKWebView *_Nullable)webView decidePolicyForNavigationAction:(WKNavigationAction *_Nullable)navigationAction decisionHandler:(void (^_Nullable)(WKNavigationActionPolicy))decisionHandler{ self.homeH5RightShareView.hidden = YES; if ([navigationAction.request.URL.scheme isEqualToString:@"file"]||[navigationAction.request.URL.scheme isEqualToString:@"tel"]||[navigationAction.request.URL.scheme isEqualToString:@"about"]) { decisionHandler(WKNavigationActionPolicyCancel); return; } self.origionalAddressStr = navigationAction.request.URL.absoluteString; lastRuestUrlString = navigationAction.request.URL.absoluteString; WKNavigationActionPolicy policy =WKNavigationActionPolicyAllow; if([[navigationAction.request.URL host] isEqualToString:@"itunes.apple.com"] && [[UIApplication sharedApplication] openURL:navigationAction.request.URL]) { policy =WKNavigationActionPolicyCancel; } decisionHandler(policy);}
4 alert弹出 在webview里面,alert() 弹出框不需要进行任何处理,在wkwebview里面 需要在app实现 不然会崩溃
//alert view 弹出- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{ UIAlertView * alter = [[UIAlertView alloc] initWithTitle:message message:nil delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil]; [alter show]; completionHandler();}
阅读全文
0 0
- 用了一年wkwebview中遇到的坑
- WKWebView 遇到的坑
- 使用WKWebView遇到的坑
- WKWebView 遇到过的坑
- WKWebView使用遇到的一些坑
- Swift 使用WKWebview过程中遇到的问题汇总
- WKWebView使用遇到的坑,WKWebView返回向上移,代理报错,返回页面报错
- WKWebView(同事遇到的坑mark下)
- iOS开发wkwebview遇到的那些坑-canOpenURL
- WKWebView使用遇到的问题与解决办法
- iOS中WKWebView的应用
- 使用WKWebView进行交互时遇到的内存泄露的坑
- 囧囧的年终奖-反思做了一年的项目遇到的问题
- 转眼快一年了,现在把自己遇到的错误都记录下来,每天记录一点点。
- WKWebView的两个坑点
- 从第一篇的博客到现在已经有一年了,请原谅我的懒惰一年中只写了一篇
- 使用WKWebView增加自动布局约束遇到的问题
- WKWebView学习过程中碰到的问题
- baseController中的一些封装
- 全面理解Unity加载和内存管理
- ActiveMQ发送queue消息
- spring-servlet.xml 和 application.xml 配置含义及bean被加载两次的问题
- java基础2 面向对象三等基本特征,五大基本特性
- 用了一年wkwebview中遇到的坑
- JIT准时生产制造管理
- 0基础lua学习(十八)C调用Lua----02Lua堆栈
- Android-----WebView使用
- Hbase的shell操作
- python模块学习(threading模块中的Barrier类)
- 关于枚举类型的一些总结
- C语言 gets()和scanf()函数的区别
- C++利用系统时间产生的随机数