[iOS问题汇总-2] WKWebView返回页面不刷新问题

WKWebView调用goBack返回时,页面不会刷新,那么对于页面需要登陆的情况就很容易出现BUG,从别的页面登陆了,返回时,当前页面还需要登陆,体验很是不好。

下面是我综合网上的思路,收集的两个解决方案,仅供参考。

方案一

在返回的同时,手动调用重新装填方法,如下:

[_webView goBack];
[_webView reload];

此方案有个缺陷:那就是前进和后退导航会出问题;

方案二(推荐)

通过注入一段JS,在页面返回的时候,触发JS重新加载页面链接,大致如下:

WKWebViewConfiguration *config = [WKWebViewConfiguration new];
WKUserContentController *userContentController = [WKUserContentController new];
WKUserScript *reloadScript = [[WKUserScript alloc] initWithSource:@"window.addEventListener('pageshow', function(event){if(event.persisted){location.reload();}});"
                                                                    injectionTime:WKUserScriptInjectionTimeAtDocumentEnd
                                                                 forMainFrameOnly:YES];
[userContentController addUserScript: reloadScript];
config.userContentController = userContentController;

这样当WKWebView后退的时候,就会触发JS的pageshow方法,进而触发页面刷新。

总结

经测试,方案更完美一些。

你可能感兴趣的:([iOS问题汇总-2] WKWebView返回页面不刷新问题)