2013-10-01 87 views
1

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

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

因为window.mozIndexedDB在iframe中为null。

我发现mozila网页此信息:

需要注意的是IndexedDB的不适合的内容合作是非常重要的加载 到另一网站的框架(无论是<frame>或这是一个 安全保密措施,可以考虑类似的 阻断第三方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(); 
        }; 
       }; 

回答

3

IndexedDB的不存储图像的最佳场所。查看将您的游戏更改为Web应用程序。您可以在清单中包含图像和其他资源,浏览器将它们下载到本地PC。您的应用可以直接访问它们,并且无需从数据库中解压缩它们。

更多信息here

+0

嗯,我把它看起来很棒。但我用ajax加载我的图像。我不会将它们追加到dom中。你知道在这种情况下做什么? – Yury

+0

我检查北斗,我发现indexedDb以及清单缓存存储数据在sqlite文件。所以它似乎没有太大的差异 – Yury