我正在为我的HTML5游戏制作导出功能,而我目前的保存方法是对游戏数据进行粗略的序列化,然后执行以下操作:

// this is Javascript
var gameData = "abc"; // this is actually a HUGE string of over 2MB
try
{
    document.location = "data:text/octet-stream,"+encodeURIComponent(JSON.stringify(gameData));
}
catch(e)
{
    console.log(e);
}

来自:Using HTML5/Javascript to generate and save a file

我不介意不能将其用于大字符串,但我希望它生成一条警告,告知该方法无效,不幸的是Chrome(16)崩溃而未捕获该异常。

有没有更好的方法来实现这种导出,对我来说重要的是使其在本地工作。 FileAPI是一个更好的解决方案,但不适用于本地。

最佳答案

AFAIK不可能在客户端;但是可以通过这种方式在Chrome中保存1.99MB的文件;也许您应该尝试压缩/优化游戏数据。一种方法是使用JSZip

为了检查当前的浏览器是否是Google Chrome浏览器,因此该方法不适用于长字符串,您可以使用如下所示的内容:

if(gameData.length > 1999999 && window.chrome){
    alert("Sorry, this export method does not work in Google Chrome")
    return;
}

09-11 00:55
查看更多