ios - 如何清除 WKWebView 的 WKBackForwardList?

标签 ios objective-c swift wkwebview

看起来 WKWebView 的 backForwardList 是只读的,但我见过人们用一些非常神奇的方法来解决这个问题。我需要想办法清除 WKWebView 的历史记录。任何想法我怎么会这样?到目前为止,我已经尝试了一些失败的技巧:

  • 使用 keyValue:forKey 无效。
  • 使用 C 指针 -> 无效。

我见过人们谈论综合属性和扩展类,但我真的不知道它是如何工作的,也想不通。还有其他想法吗?

最佳答案

适用于 iOS8 ~ iOS11。

objective-C

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[wek.backForwardList performSelector:NSSelectorFromString(@"_removeAllItems")];
#pragma clang diagnostic pop

swift 4

webView.backForwardList.perform(Selector(("_removeAllItems")))

!!!!注意!!!!此方法在 WebKit Open Resource 中声明,不是公共(public)方法。

关于ios - 如何清除 WKWebView 的 WKBackForwardList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46086691/

相关文章:

ios - 如何在 Objective-C 类别中使用内部方法?

ios - UITableView 中带有 UITextView 的 UIToolbar

c++ - 如何在 C++ 应用程序中处理指向 Objective-C 对象的指针

objective-c - 无法访问 C 函数体中的 Objective-C 类实例变量

swift - 线程 1 : signal SIGABRT libc++abi. dylib:因 NSException 类型的未捕获异常而终止(lldb)

c# - 从另一个 ViewController 接收后的初始化数据

ios - objc_msgSend() 调度表

ios - EXC_BAD_ACCESS 指向函数头

ios - 在 Swift 中共享位置

ios - AVAudioPlayer 在 iPhone 6 和 6+ 中以非常低的音量播放声音