脚本堆栈空间耗尽firefox

时间:2009-06-16 08:35:55

标签: javascript jquery xml mozilla

我正在处理来自Web服务的大型XML响应。当我尝试使用URL获取时,一段时间后它在Firebug中显示“脚本堆栈空间配额已用尽”的错误 我该如何解决?

4 个答案:

答案 0 :(得分:4)

听起来就像在处理xml时会发生一些递归一样,这实际上是导致堆栈溢出(通过任何名称)。

思想:

  • 使用较少的数据
  • 如果您手动处理数据,请尝试使用较少的递归?可能是手动尾调用或基于队列/堆栈的
  • 考虑json - 然后您可以卸载到脚本主机以重新水化对象而无需任何额外处理

答案 1 :(得分:1)

您是否尝试过禁用Firebug?

答案 2 :(得分:1)

从Firefox 3开始,可用的堆栈空间从4MB减少到〜= 640KB(我在这里传递口碑)。

你碰巧在运行FF3吗?

https://bugzilla.mozilla.org/show_bug.cgi?id=420874

答案 3 :(得分:1)

我有类似的问题,也许是一样的。 如果你试图用jQuery $(html)解析一大块html,就会发生这种情况。

在我的测试中,这只发生在Windows上的Firefox 3.6.16上。 Ubuntu上的Firefox 4.0.1表现得更好。可能与操作系统无关,只是4.x中的脚本引擎要好得多..

解决方案: 而不是

var $divRoot = $(html);

我做了

var $temp = $('<div style="display:none;">');  // .appendTo($('body'));  // (*)
$temp.html(html);  // using the client's html parsing
var $divRoot = $('> div', $temp);  // or .children() or whatever
// $temp.remove();  // (*)

(*) 我记得在jquery可以应用任何选择器之前,在某些情况下你需要将temp节点添加到body。但是,在这种情况下,如果没有它,似乎工作得很好。

FF 4.x完全没有区别,但确实可以避免FF 3.x上的堆栈空间溢出错误。