美文网首页
WKWebView 白屏问题

WKWebView 白屏问题

作者: 一念起 | 来源:发表于2023-03-05 16:15 被阅读0次

情况一:内存占用过大,会执行webViewWebContentProcessDidTerminate进程终止方法。此方法适用于ios9.0以上, 出现此情况, 尽量将网络请求以及消耗内存的操作交给H5来实现。

//进程终止(内存消耗过大导致白屏)
- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView {
    [webView reload];
}

情况二: 退到后台,再次唤醒出现白屏, 需要判断webView是否处于白屏状态。
方法1: 判断当前webView的title为空。 但是对于本来title就为空的页面不适用。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (self.webView.title == nil || self.webView.title.length == 0) {
        [self.webView reload];
    }
}

方法2:判断当前webview的URL为空或about:blank。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if ([self.webView.URL.absoluteString isEqualToString:@""] || self.webView.URL.absoluteString.length == 0) {
        [self.webView reload];
    }
}

方法3:通过执行JS代码document.body.innerHTML查看页面内容。

//监听app进入前台通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appEnterPlayground) name:UIApplicationDidBecomeActiveNotification object:nil];

- (void)appEnterPlayground {
    [self.webView evaluateJavaScript:@"document.body.innerHTML"
                   completionHandler:^(id _Nullable result, NSError * _Nullable error) {
        NSString *innerHTML = result;
        if ([innerHTML isEqualToString:@""] || innerHTML.length == 0) {
            [self.webView reload];
        }
    }];
}

以上三种方法并非绝对有效,只是针对特定的网页

方法4:判断是否白屏方法

- (BOOL)isBlankView:(UIView*)view {
    Class wkCompositingView = NSClassFromString(@"WKCompositingView");
    if ([view isKindOfClass:[wkCompositingView class]]) {
        return NO;
    }
    for(UIView *subView in view.subviews) {
        if (![self isBlankView:subView]) {
            return NO;
        }
    }
    return YES;
}

相关文章

  • 项目中WKWebview 暂时未解决问题

    问题1 WKWebView 加载白屏问题 Could not signal service com.apple.W...

  • wkwebview白屏问题

    【腾讯Bugly干货分享】WKWebView 那些坑 - 腾讯Bugly的专栏 - CSDN博客

  • WKWebView 白屏问题

    WKWebView的推出, 解决了很多UIWebView 的问题。比如加载速度慢,内存泄露等问题。WKWebVie...

  • WKWebView的 开发坑

    1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...

  • WKWebView的 开发坑

    1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...

  • WKWebView那些坑

    1、WKWebView白屏问题 WKWebView自诩拥有更快的加载速度,更低的内存占用,但实际上WKWebVie...

  • WKWebView开发中遇到的坑

    1.WKWebView白屏问题 WKWebView自我拥有更快的加载速度,更低的内存占用,但实际上WKWebVie...

  • Could not signal service com.app

    iOS 的WKWebview加载白屏问题。xcode的报错提示是 Could not signal service...

  • WKWebView白屏原因及其解决方案

    白屏场景 加载到WKWebView页面后,前/后台来回切换APP。 白屏原因 WKWebView是一个多进程组件,...

  • WKWebview 白屏

    WKWebview页面突然白屏问题 页面突然白屏可能是由于加载资源过大,内存不足,导致webview的进程被程序终...

网友评论

      本文标题:WKWebView 白屏问题

      本文链接:https://www.haomeiwen.com/subject/uamuldtx.html