1

我正在制作 HTML5 游戏。我使用 indexedDB 来存储图像(大约 50mb)。它工作得很好。但我想将我的游戏添加到游戏网站。游戏网站用于游戏 iframe。这在 Chrome 中效果很好。但是firefox有错误

TypeError: indexedDB is undefined
var request = indexedDB.open(dbName,BDversion);  

因为 window.mozIndexedDB 在 iframe 中为空。

我在 mozila 页面上找到了以下信息:

需要注意的是,IndexedDB 不适用于从另一个站点加载到框架中的内容(或者<frame><iframe>。这是一种安全和隐私措施,可以被视为类似于阻止 3rd-party cookie。有关更多详细信息,请参阅错误 595307 .

知道如何解决吗?PS Web SQL 数据库 - 似乎很快就会不受支持

我的代码:

 function RequestIm() {
                $.ajax({
                    type: "POST",
                    url: BattleNs.addUrl +"/Battle/GetPicture",
                    data: "{ \"id\": \"111\",\"PictureID\":" + "\"" + ID + "\"" + "}",
                    contentType: "application/json; charset=utf-8",
                    async: false,
                    success: function (Picture) {
                        returnpic = Picture;
                        // alert(UnitsInfoMass);
                        return returnpic;
                    }
                });

                Data = returnpic;
                var tempdata = { UniID: ID, Data: Data, DataVersion: DataVersion };
                var request = objectStore.put(tempdata);
                request.onsuccess = function (event) {
                    CountOfDBIterrations[Numer].ID = ID;
                    CountOfDBIterrations[Numer].Image.src = returnpic;
                    CountOfDBIterrations[Numer].Image.onload = function (e) {
                        CountOfDBIterrations[Numer].Loaded = true;
                         BattleNs.loadingCount++;
                          BattleNs.loadingCountChange();
                    };
                };
4

1 回答 1

3

IndexedDB 不是存储图像的最佳位置。考虑将您的游戏更改为 Web 应用程序。您可以在清单中包含图像和其他资产,浏览器会将它们下载到本地 PC。您的应用程序可以直接访问它们,无需从数据库中解压它们。

更多信息在这里

于 2013-10-01T05:58:05.217 回答