WKWebView 清历史栈
时间: 2023-07-09 13:09:27 浏览: 76
清除 WKWebView 的历史记录可以通过以下两种方式实现:
1. 直接调用 WKWebView 的 evaluateJavaScript 方法,执行清空历史记录的脚本:
```
[self.webView evaluateJavaScript:@"window.history.go(-window.history.length);"
completionHandler:nil];
```
2. 使用 WKWebsiteDataStore 来清除浏览器缓存和历史记录:
```
WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore];
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
[dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes]
modifiedSince:dateFrom
completionHandler:^{
// 清除完成之后的回调
}];
```
注意:这两种方式都可以清除历史记录,但第二种方式还可以清除其他类型的浏览器数据,如缓存、Cookie 等。因此,如果只需要清除历史记录,建议使用第一种方式。
相关问题
WKWebView 清栈
WKWebView 是 iOS 中的一个视图控件,它可以加载网页并且提供了一些与网页交互的接口。清空 WKWebView 的浏览历史记录可以使用以下方法:
```swift
// 获取 WKWebView 的浏览器历史记录
let backList = webView.backForwardList
// 遍历历史记录,清空堆栈
for i in 0..<backList.backList.count {
webView.go(to: backList.backList[i])
}
```
通过获取 WKWebView 的 backForwardList 属性,我们可以获取到浏览器的历史记录,然后可以遍历历史记录并通过 go(to:) 方法清空堆栈。这样就可以清空 WKWebView 的浏览器历史记录了。
WKWebView backForwardList 清理
WKWebView的backForwardList保存了用户浏览过的历史记录,可以通过以下代码清空历史记录:
```swift
if let backForwardList = webView.backForwardList {
let listCount = backForwardList.backList.count + backForwardList.forwardList.count
for i in 0..<listCount {
webView.goBack()
if let cookies = HTTPCookieStorage.shared.cookies {
for cookie in cookies {
HTTPCookieStorage.shared.deleteCookie(cookie)
}
}
}
}
```
这个代码会将所有历史记录都清空,并且删除所有的Cookie。如果只想删除一部分历史记录,可以根据自己的需求进行修改。