传递给jQuery.append()的字符串大小是否有限制

时间:2015-05-18 11:17:54

标签: javascript jquery html angularjs

我在Angular中编写了一个基本程序,它使用路由器功能将两个页面呈现为单页面应用程序。到目前为止,就是这样。我有一个页面,其中包含两个用于导航的按钮,以及一个包装div(ng-view),当单击相应的按钮时,该页面将填充两个页面的内容。

当我尝试加载两个页面中较大的一个时,我收到以下错误:

SyntaxError: Unexpected token <

此错误是从angular.js:11594(我使用的是1.3.9版本)引发的。调试之后,我发现jQuery中会抛出异常,代码为:

this.empty().append( value );

我查看了输入参数'value',它非常大。它包含超过11,000行,大1.59 MB。

我在html格式检查器(http://www.freeformatter.com/)中运行输入字符串。格式很好,没有额外的开放标记。

jQuery的方法是否有可能无法处理如此大的字符串?我搜索谷歌这样的限制,但我能找到的是使用jQuery应用限制的建议,文档(http://devdocs.io/jquery/append)没有提到这样的限制。

注意:

  1. 我使用的是jQuery版本1.11.0
  2. 我无法更新版本,因为我的团队使用PrimeFaces,这是与PrimeFaces版本匹配的jQuery版本。
  3. 从第5830行抛出异常。
  4. 大文件由JSF在服务器端创建。我无法改变它。
  5. 我尝试使用iframe,但它确实有用。我的猜测是只使用jQuery附加iframe元素,然后将大内容加载到iframe中。我的团队负责人不希望我使用iframe,所以这没有帮助。
  6. 感谢。

1 个答案:

答案 0 :(得分:-1)

你要面对的第一个限制是,如果字符串超过512个字节,那么由它创建的dom片段不会被缓存。下一个限制是浏览器中.innerHTML的限制。但是它非常巨大(高)......但是在附加大量内容的同时,你将面临巨大的滞后(可能需要很长时间才能加载)。

相关问题