Скрипт стека пространства исчерпан firefox - PullRequest
3 голосов
/ 16 июня 2009

Я работаю с большим XML-ответом от веб-службы. Когда я пытаюсь получить это с помощью URL-адреса, через некоторое время в Firebug выдается сообщение об ошибке «квота пространства стека сценария исчерпана» Как я могу решить это?

Ответы [ 4 ]

4 голосов
/ 16 июня 2009

Это звучит , как будто при обработке xml происходит некоторая рекурсия, которая по существу вызывает переполнение стека (под любым именем).

Мысль:

  • работа с меньшим количеством данных
  • если вы обрабатываете данные вручную, попробуйте использовать меньше рекурсии? возможно, ручной хвостовой вызов или очередь / стек
  • рассмотрим json - тогда вы можете разгрузить хост сценария для повторной гидратации объекта без какой-либо дополнительной обработки
1 голос
/ 15 июня 2011

У меня была похожая проблема, может, такая же. Это может произойти, если вы попытаетесь проанализировать огромный кусок html с помощью jQuery $ (html).

В моих тестах это происходило только в Firefox 3.6.16 в Windows. Firefox 4.0.1 на Ubuntu вел себя намного лучше. Наверное, не имеет ничего общего с ОС, просто механизм сценариев в 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 сможет применить любые селекторы. Тем не менее, в этом случае, похоже, без этого все работало нормально.

В FF 4.x различий не было, но это позволило избежать ошибки переполнения стека в FF 3.x.

1 голос
/ 16 февраля 2010

Начиная с Firefox 3, доступное пространство стека сократилось с 4 МБ до ~ = 640 КБ (я передаю из уст в уста здесь).

Вы работаете с FF3?

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

1 голос
/ 16 июня 2009

Вы пытались отключить Firebug?

...