Ошибка в ошибке «Вне пространства стека», пытающейся выполнить сериализацию объекта ASP.NET AJAX Array.Ошибка ASP.NET AJAX JavaScript Serialization
Вот сценарий с упрощенным кодом:
Default.aspx
MainScript.js
function getObject(){ return new Array(); } function function1(obj){ var s=Sys.Serialization.JavaScriptSerializer.serialize(obj); alert(s); } function function2(){ var obj=getObject(); var s=Sys.Serialization.JavaScriptSerializer.serialize(obj); alert(s); }
Content.aspx
ContentScript.js
function serializeObject(){ var obj=window.top.getObject(); window.top.function1(obj); // <– This works fine obj=new Array(); window.top.function1(obj); // <– this causes an Out of Stack Space error }
Код для страниц образцов и JavaScript является here.
Публикация кода для страниц aspx здесь представляла проблему. Поэтому, пожалуйста, проверьте приведенную выше ссылку, чтобы увидеть код для страниц aspx.
Веб-страница (default.aspx) с IFrame, на которой размещена страница контента (content.aspx).
Нажатие кнопки «Сериализовать объект» вызывает функцию JavaScript serializeObject(). Сериализация прекрасно работает для объектов Array, созданных в верхнем окне (вне рамки). Однако, если объект массива создается в IFrame, серийные бомбы с ошибкой пространства стека. Я прошел через ASP.Net AJAX JS-файлы, и я обнаружил, что этот процесс переходит в бесконечный цикл, пытаясь выяснить тип объекта массива. Бесконечный вызов Number.IsInstanceOf и довольно скоро вы получите ошибку в стеке.
Любые идеи?