Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于本地HTML文件的IndexedDB_Javascript_Html_Indexeddb - Fatal编程技术网

Javascript 基于本地HTML文件的IndexedDB

Javascript 基于本地HTML文件的IndexedDB,javascript,html,indexeddb,Javascript,Html,Indexeddb,我想开发一个使用浏览器与用户交互的应用程序。该应用程序将可脱机使用,并可通过zip进行分发 我希望执行的功能由HTML、CSS、JS处理,我希望使用IndexedDB功能 我遇到了IndexedDB(Chrome)的一个问题,相同的代码可以在在线空间中工作,但不能从本地硬盘驱动器位置(文件://)工作 请参阅示例: 有什么建议吗?indexedDB API只在Web服务器中工作。当您使用文件系统导航到它时,它将无法工作。indexedDB API需要一个域上下文才能工作,而文件系统不提供这一点。

我想开发一个使用浏览器与用户交互的应用程序。该应用程序将可脱机使用,并可通过zip进行分发

我希望执行的功能由HTML、CSS、JS处理,我希望使用IndexedDB功能

我遇到了IndexedDB(Chrome)的一个问题,相同的代码可以在在线空间中工作,但不能从本地硬盘驱动器位置(文件://)工作

请参阅示例:


有什么建议吗?

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");
    };

})();