美文网首页
WKWebView如何优雅的清除历史记录

WKWebView如何优雅的清除历史记录

作者: 桥下醉翁 | 来源:发表于2020-10-19 10:51 被阅读0次

需求说明

  • 复用WKWebView需要清除当前网页内容
  • 复用WKWebView需要清除历史记录

可以想到的原生解决方案

既然是WKWebView,那就查找原生的API吧。

  • 首先要清空当前页面内容
// 效果不是很好的解决方案
[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) {}

继续优化

清空当前页面内容的方案,实现的效果并不理想,并非100%清空!!!并非100%清空!!!并非100%清空!!!
一番扯皮讨论后,我们可以曲线救国,在页面JS上做清空不就很简单了嘛!

    DWeakSelf(self);
    [self evaluateJavaScript:@"document.body.innerHTML = '';" completionHandler:^(id result, NSError * _Nullable error) {
    }];

程序运行,效果十分棒棒。
这个时候我就有思路了,能否通过JS清除历史记录呢?
未完,待续。

相关文章

  • WKWebView如何优雅的清除历史记录

    需求说明 复用WKWebView需要清除当前网页内容 复用WKWebView需要清除历史记录 可以想到的原生解决方...

  • 清除wkWebView历史记录

    链接:https://stackoverflow.com/questions/46086691/how-to-cl...

  • WKWebView如何清除缓存

    WKWebView如何清除缓存 iOS7.0只有UIWebView, 而iOS8.0是有WKWebView, 但8...

  • IDEA清除缓存慎用

    由于清除缓存会把所有的历史记录也给清除,

  • vue清除路由历史记录

    vue清除路由历史记录 为什么要清除路由历史记录?从A页面→B页面→C页面,想要直接返回A页面 1、router....

  • 清楚WKWebView缓存

    WKWebView清除缓存WKWebView,在iOS9以后提供了缓存管理类WKWebsiteDataStore,...

  • WKWebView POST请求

    这一文章介绍如何通过类目让WKWebView优雅的实现POST请求,为啥说是优雅: 实现POST请求 实现原理是通...

  • 如何优雅的清除浮动?

    有条件的话尽量使用弹性盒布局,就不会有烦人的浮动问题了。当一个盒子的子元素浮动后,父元素的高度会塌陷。在css中给...

  • 如何优雅的清除浮动?

    有条件的话尽量使用弹性盒布局,就不会有烦人的浮动问题了。当一个盒子的子元素浮动后,父元素的高度会塌陷。在css中给...

  • 如何给图标添加点击效果

    历史记录清除更新组件的使用 https://segmentfault.com/a/1190000022318541

网友评论

      本文标题:WKWebView如何优雅的清除历史记录

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