迭代窗口对象时出现“'window.webkitStorageInfo' is deprecated”警

"'window.webkitStorageInfo' is deprecated" warning while iterating window object

本文关键字:is webkitStorageInfo deprecated window 窗口 迭代 对象      更新时间:2023-09-26

请考虑html/javascript中的以下代码:

<html>
<head>
<script>
    var myObject = {};
    var mySecondReference = myObject;
    for (s in window)
      if (window[s]===myObject)
        alert("reference found: " + s);
</script>
</head>
</html>

它遍历窗口对象,以便搜索对给定对象的任何引用。它在任何地方都可以正常工作,但是在Chrome/ium中给了我以下警告:

'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.
test.html:8 'webkitIndexedDB' is deprecated. Please use 'indexedDB' instead.

这是我应该害怕的事情吗(尤其是未来版本的 chrome 浏览器)?

如何摆脱这些消息?

这不是你不必担心的事情,如果你不想看到它们,只需过滤它

var myObject = {};
var mySecondReference = myObject;
for (s in window)
  if (!/webkitStorageInfo|webkitIndexedDB/.test(s) && window[s]===myObject)
    alert("reference found: " + s);

错误消息告诉您应该做什么

'window.webkitStorageInfo' 已被弃用。请使用"navigator.webkitTemporaryStorage"或"navigator.webkitPersistentStorage"。

test.html:8 'webkitIndexedDB' 已被弃用。请改用"索引数据库"。

因此,与其使用 window.webkitStorageInfo ,请使用 window.webkitTemporaryStoragenavigator.webkitPersistentStorage

您可以使用如下所示的内容检查这些是否存在:

var storageInfo = null;
if(navigator.webkitTemporaryStorage) {
  storageInfo = navigator.webkitTemporaryStorage;
} else if(navigator.webkitPersistentStorage) {
  storageInfo = navigator.webkitPersistentStorage;
} else if (window.webkitStorageInfo) {
  storageInfo = window.webkitStorageInfo;
}

indexedDB弃用消息相同

var yourDB = null;
if(indexedDB) {
  yourDB = indexedDB;
} else if(webkitIndexedDB) {
  yourDB = webkitIndexedDB;
}