HTML 更改时从零开始重新创建 IndexedDB 数据库
Recreating IndexedDB database from zero when HTML changes
我对前端主题不是很精通,我正在尝试找到一种方法来在 onupgradeneeded 上完全重置 indexeddb 数据库,每次 html 更改时都应该触发它。
我能做到吗?
到目前为止,我依赖于在重新加载之前清除所有内容
试试这样的东西:
function onHTMLChanged() {
var request = indexedDb.open(...);
request.onupgradeneeded = function() {
var db = request.result;
for (var i = 0; i < db.objectStoreNames.length; i++) {
db.deleteObjectStore(db.objectStoreNames[i]);
}
};
}
我最终生成了带有标签
的HTML
<meta name="timestamp" content="1614722463">
并像这样打开数据库:
window.indexedDB.open("MyDB", parseInt(document.head.getElementsByTagName('meta').namedItem('timestamp').getAttribute('content')));
这几乎就像对脚本进行版本控制,因此它每次都使用不同的版本值(如果有人展示了更好的方法来做同样的事情而不必依赖生成的元标记,我会更改所选的答案)
我对前端主题不是很精通,我正在尝试找到一种方法来在 onupgradeneeded 上完全重置 indexeddb 数据库,每次 html 更改时都应该触发它。 我能做到吗?
到目前为止,我依赖于在重新加载之前清除所有内容
试试这样的东西:
function onHTMLChanged() {
var request = indexedDb.open(...);
request.onupgradeneeded = function() {
var db = request.result;
for (var i = 0; i < db.objectStoreNames.length; i++) {
db.deleteObjectStore(db.objectStoreNames[i]);
}
};
}
我最终生成了带有标签
的HTML<meta name="timestamp" content="1614722463">
并像这样打开数据库:
window.indexedDB.open("MyDB", parseInt(document.head.getElementsByTagName('meta').namedItem('timestamp').getAttribute('content')));
这几乎就像对脚本进行版本控制,因此它每次都使用不同的版本值(如果有人展示了更好的方法来做同样的事情而不必依赖生成的元标记,我会更改所选的答案)