需求說明
- 復(fù)用WKWebView需要清除當(dāng)前網(wǎng)頁內(nèi)容
- 復(fù)用WKWebView需要清除歷史記錄
可以想到的原生解決方案
既然是WKWebView,那就查找原生的API吧。
- 首先要清空當(dāng)前頁面內(nèi)容
// 效果不是很好的解決方案
[self loadHTMLString:@"" baseURL:nil];
// 某度搜索到的方案,可惜我在WKWebView中的代理過濾了about:blank
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]];
- 然后清空歷史記錄,防止滑動返回帶來的苦惱
然鵝開放API只讓我找到了self.backForwardList.backList,卻沒有給我清空歷史記錄的操作。
幸好stackoverflow上有同行與我有同樣的想法。時空隧道
// 我選擇了私有方法,審核通過并未被拒
@try {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[weakself.backForwardList performSelector:NSSelectorFromString(@"_removeAllItems")];
#pragma clang diagnostic pop
} @catch (NSException *exception) {}
繼續(xù)優(yōu)化
清空當(dāng)前頁面內(nèi)容的方案,實現(xiàn)的效果并不理想,并非100%清空!?。〔⒎?strong>100%清空?。?!并非100%清空?。?!
一番扯皮討論后,我們可以曲線救國,在頁面JS上做清空不就很簡單了嘛!
DWeakSelf(self);
[self evaluateJavaScript:@"document.body.innerHTML = '';" completionHandler:^(id result, NSError * _Nullable error) {
}];
程序運行,效果十分棒棒。
這個時候我就有思路了,能否通過JS清除歷史記錄呢?
未完,待續(xù)。