当URI太长时,Chrome会崩溃

Sol*_*oid 6 javascript html5

我正在为我的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);
}
Run Code Online (Sandbox Code Playgroud)

From:使用HTML5/Javascript生成并保存文件

我不介意我不能将它用于大字符串,但我希望它能生成警告,通知此方法不起作用,不幸的是Chrome(16)崩溃而没有捕获该异常.

有没有更好的方法来实现这种出口,对我来说重要的是让它在本地工作.FileAPI将是一个更好的解决方案,但不能在本地工作.

Iva*_*nos 1

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; 
}
Run Code Online (Sandbox Code Playgroud)

  • Chrome 的崩溃程度比 JavaScript 代码更深。你无法捕捉到这个错误;你只能尽力避免导致这种情况的情况发生。 (4认同)