Javascript 基于本地HTML文件的IndexedDB
我想开发一个使用浏览器与用户交互的应用程序。该应用程序将可脱机使用,并可通过zip进行分发 我希望执行的功能由HTML、CSS、JS处理,我希望使用IndexedDB功能 我遇到了IndexedDB(Chrome)的一个问题,相同的代码可以在在线空间中工作,但不能从本地硬盘驱动器位置(文件://)工作 请参阅示例:Javascript 基于本地HTML文件的IndexedDB,javascript,html,indexeddb,Javascript,Html,Indexeddb,我想开发一个使用浏览器与用户交互的应用程序。该应用程序将可脱机使用,并可通过zip进行分发 我希望执行的功能由HTML、CSS、JS处理,我希望使用IndexedDB功能 我遇到了IndexedDB(Chrome)的一个问题,相同的代码可以在在线空间中工作,但不能从本地硬盘驱动器位置(文件://)工作 请参阅示例: 有什么建议吗?indexedDB API只在Web服务器中工作。当您使用文件系统导航到它时,它将无法工作。indexedDB API需要一个域上下文才能工作,而文件系统不提供这一点。
有什么建议吗?indexedDB API只在Web服务器中工作。当您使用文件系统导航到它时,它将无法工作。indexedDB API需要一个域上下文才能工作,而文件系统不提供这一点。简而言之,您需要一个url来使用api。IndexedDB在从文件运行时被禁用:///以确保安全。不清楚您是否控制浏览器参数。如果您这样做,您可以传递--allow file access from files,这将允许IndexedDB从以下文件开始工作:///origin。如果有人正在寻找这个6年问题的更新答案,Chrome和Safari现在都允许本地HTML文件访问IndexedDB API,而不需要本地服务器。在这个问题上,似乎是这样。对Edge或Firefox不确定。这两种情况下对我都适用,但我必须将
createObjectStore
移动到onupgradeneeded
如果您有python:“python-mhttp.server”在本地目录的8000端口上启动web服务器。非常感谢您的帮助,您对如何在仅客户端应用程序中使用此功能有何建议?这意味着您要在其上复制的每个设备都必须运行web服务器。此外,文件必须复制到该Web服务器的文件夹中,以便通过环回URL()访问。请扩展此答案,并指定如何使Chrome允许使用本地HTML和JS文件访问indexDB API?我试着去,但没用。好像被锁在外面了。先谢谢你
(function() {
var db;
var dbreq = indexedDB.open("TestApp", 2);
dbreq.onsuccess = function(e) {
alert("Database created");
db = e.target.result;
var employeeStore = db.createObjectStore (
"employees",
{keyPath: "id"}
);
};
dbreq.onerror = function(e) {
alert("Database Error: " + e.target.errorCode);
};
dbreq.onupgradeneeded = function(e) {
alert("Database upgrade needed");
};
})();