在Javascript中获取最大数据Uri大小

edi*_*999 4 javascript data-uri

我想将数据导出为数据URI,只有当数据大小不超过当前浏览器支持的数据URI的最大大小时,才会将数据导出为我想要下载的文件.

document.location.href= "data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,"+data
Run Code Online (Sandbox Code Playgroud)

当文件太大时,这有时会导致浏览器错误,但我希望在下载之前可以捕获错误(例如尝试其他方法).

如何在JS中获取最大数据URI大小?

edi*_*999 7

我已决定对此表进行硬编码:

这是我用来测试maxsize的脚本:

String.prototype.repeat = function( num )
{
    return new Array( num + 1 ).join( this );
}

testDataURI=function(size) 
{
    window.open("data:text/plain,"+"a".repeat(size-16))
}


testDataURI(100000) //test 100k characters
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

结果:

  1. Chrome(从版本28开始):使用2 097 152字节,正好是2 MB
  2. Firefox(从版本26开始):使用1 040 000字节,大概是1 MB