2009-06-16 78 views
3

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

回答

4

听起来像处理XML时发生了一些递归,实质上导致堆栈溢出(任何名称)。

思考:

  • 数据较少
  • 如果要手动处理数据的工作,尽量少用递归?也许手动尾调用或队列/栈为基础
  • 考虑JSON - 那么你可以卸载的脚本宿主来补充水分的对象,而无需任何额外的处理
1

您是否尝试时禁用Firebug?

+0

这是一个好主意,只是为了确保问题出在firefox本身 – annakata 2009-06-16 08:40:17

+0

它与firefox本身 – Andromeda 2009-06-16 08:49:31

1

我也有类似的问题,也许是相同的。 如果您尝试使用jQuery $(html)解析大量html,就会发生这种情况。

在我的测试中,这只发生在Windows上的Firefox 3.6.16上。 Ubuntu上的Firefox 4.0.1表现更好。可能没什么用的OS做的,只是在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(); // (*) 

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

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