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

Is there a limit on the size of the string passed to jQuery.append()

本文关键字:字符串 是否 有限制 jQuery append      更新时间:2023-09-26

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

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

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的方法不能处理这么大的字符串?我在Google上搜索了这样的限制,但我所能找到的都是使用jQuery应用限制的建议,而且文档(http://devdocs.io/jquery/append)没有提到这样的限制。

指出:

    我正在使用jQuery版本1.11.0
  1. 我无法更新版本,因为我的团队使用的是PrimeFaces,而这是与PrimeFaces版本匹配的jQuery版本。
  2. 异常从第5830行抛出。这个大文件是由JSF在服务器端创建的。我不能改变它。
  3. 我尝试使用iframes,它工作。我的猜测是,使用jQuery只添加了一个iframe元素,然后将大内容加载到iframe中。我的团队领导不希望我使用iframe,所以这没有用。

谢谢。

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