Javascript 脚本堆栈空间耗尽firefox
我正在处理来自web服务的大型XML响应。当我尝试使用URL获取时,一段时间后,Firebug中会显示一个错误“脚本堆栈空间配额已用尽” 如何解决这个问题呢?听起来在处理xml时好像发生了一些递归,这实际上是导致堆栈溢出(以任何名称) 想法:Javascript 脚本堆栈空间耗尽firefox,javascript,jquery,xml,mozilla,Javascript,Jquery,Xml,Mozilla,我正在处理来自web服务的大型XML响应。当我尝试使用URL获取时,一段时间后,Firebug中会显示一个错误“脚本堆栈空间配额已用尽” 如何解决这个问题呢?听起来在处理xml时好像发生了一些递归,这实际上是导致堆栈溢出(以任何名称) 想法: 用更少的数据工作 如果您是手动处理数据,是否尝试使用较少的递归?可能是手动尾部调用或基于队列/堆栈 考虑json—然后您可以将其卸载到脚本主机,以便在不进行任何额外处理的情况下重新水化该对象 您是否尝试过禁用Firebug?从Firefox 3开始,可用
- 用更少的数据工作
- 如果您是手动处理数据,是否尝试使用较少的递归?可能是手动尾部调用或基于队列/堆栈
- 考虑json—然后您可以将其卸载到脚本主机,以便在不进行任何额外处理的情况下重新水化该对象
我也有类似的问题,也许是同样的问题。 如果您试图用jQuery$(html)解析一大块html,就会出现这种情况 在我的测试中,这只发生在Windows上的Firefox 3.6.16上。 Ubuntu上的Firefox4.0.1表现要好得多。可能与操作系统无关,只是4.x中的脚本引擎要好得多 解决方案: 而不是
var $divRoot = $(html);
是的
var$temp=$('');/。附加到($('body');//(*)
$temp.html(html);//使用客户端的html解析
变量$divRoot=$('>div',$temp);//或者。孩子们()或者别的什么
//$temp.remove();//(*)
(*)
我记得在某些情况下,在jquery应用任何选择器之前,您需要将temp节点添加到主体中。然而,在这种情况下,如果没有这一点,它似乎工作得很好
在FF 4.x上完全没有区别,但它确实允许避免FF 3.x上的堆栈空间溢出错误。这是一个好主意,只是为了确保问题出在firefox本身
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(); // (*)