0

我有一个 Kiosk 应用程序,它将用于收集公共注册,并且注册页面是一个显示在受控 WebView 中的公共网站。我需要从 WebView 缓存中清除所有用户的个人数据,但似乎无法使用已记录的过程来执行此操作。

这是我的 WebView 标记:

<div><webview id="wv" style="width:100%; height:95%;position:absolute;margin:0px;padding:0px;" partition="extraContent"></webview></div>

这是我用来清除缓存和存储的代码:

 var webview = document.getElementById("wv");
 var options = {
  'since':1000000000
};
var caches = {
  "appcache": true,
    "cache": true,
    "cookies": true,
    "fileSystems": true,
    "indexedDB": true,
    "localStorage": true,
    "webSQL": true
};
webview.clearData(options, caches, function() {
  webview.terminate();
  $("webview").remove();
  appendWebview();
});

clearData没有完成这项工作时,我开始完全终止视图并添加一个具有相同标记的新视图。然而,当新的 WebView 加载时,我仍然可以看到个人详细信息。为什么会发生这种情况,如何删除数据?

4

1 回答 1

0

似乎目前不可能做我想做的事(说真的?): 类似的 SO Question

但是,对于我的特定用例,有一种解决方法。我可以在普通视图中显示本地内容,甚至是它自己的 webview,然后使用唯一的虚拟分区 ID 来显示 web 内容的 webview。当会话应该结束时,我可以生成一个新的唯一分区 ID 并使用它来启动一个新的 webview,该 webview 将无法访问前一个的缓存。

对于其他有类似问题的人,这不是我在这个平台上发现的唯一不可接受和错误的行为,在 Chromium 团队能够生产出更稳定的产品之前,对于严肃的项目应该避免这种行为。

于 2015-10-08T19:32:05.870 回答