Вопрос

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

Это было полезно?

Решение

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

Мысли:

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

Другие советы

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

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

Вы случайно не используете FF3?

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

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

В моих тестах это произошло только в Firefox 3.6.16 для Windows.Firefox 4.0.1 на Ubuntu вел себя намного лучше.Наверное, дело не в ОС, просто скриптовый движок в 4.х намного лучше..

Решение:Вместо

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 в тело, прежде чем jquery сможет применить какие-либо селекторы.Однако в данном случае, похоже, и без этого все работало нормально.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top