我有一个相当大的 JavaScript 文件,其中包含通过脚本标签加载的 JSONP 数据 (27 MB)。这适用于除 Firefox 之外的所有浏览器,它拒绝加载文件(错误是“switch statement too large”,尽管那里没有 switch)。但它适用于较小的文件(2MB)。
Firefox 中 JavaScript 文件的最大文件大小是多少,所以我可以对文件进行分区并绕过这个边界?
我有一个相当大的 JavaScript 文件,其中包含通过脚本标签加载的 JSONP 数据 (27 MB)。这适用于除 Firefox 之外的所有浏览器,它拒绝加载文件(错误是“switch statement too large”,尽管那里没有 switch)。但它适用于较小的文件(2MB)。
Firefox 中 JavaScript 文件的最大文件大小是多少,所以我可以对文件进行分区并绕过这个边界?
在从我现在不记得的网站中终止大型 JavaScript 文件的流式传输后,我只看到过一次此错误。
有什么理由必须一次加载完整文件吗?例如,您可以将它分成 2MB 的部分进行流式传输,并被类似的东西包围
(function() {
myJsonData += "..... 2MB of your code ...";
})();
注意:您必须myJsonData
在全局上下文中定义才能跟踪它!
在此之后,您只需要一些完成语句和回调,即发送您的最后一条数据,如下所示:
(function() {
myJsonData += "..... 2MB of your code ...";
// Trigger callback which works with the json data
myCallbackFunction();
})();
这就是我尝试解决此错误的方式。
或绕过限制和缓慢加载:只需压缩数据(在服务器上一次);客户端的浏览器读取文件并解压缩。
两者都在大约 70 行代码中起作用:
enter code here
我认为最大为 20MB
(function() {
myJsonData += "..... 2MB of your code ...";
// Tr`enter code here`igger callback which works with the json data
myCallbackFunction();
})();
一些关于移动浏览器的测试 - 在台式机上检查也很有趣:脚本大小与浏览器缓存中的脚本
http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/