Google Chrome и его ограничение на длину массива

от автора

недавно писал и тестровал очередной свой сайт, в котором антиспама без капчи достигал с помощью упаковки и шифрования кода формы с помощью javascript.

при тестировании одной страницы мой клиент заметил, что только в Google Chrome не отображается регистрационная форма, вес страницы из-за обилия пунктов которой немаленький.
открыл я Chrome и действительно — нет формы.

с чего б начать? о! консоль ошибок показывает «Uncaught SyntaxError: Too many arguments in function call (only 32766 allowed)», что в переводе на понятный язык сообщает, что много аргуметов передаётся в функцию и только 32 тысячи с хвостиком допустимо.


вывожу генерируемый javascript, чтоб обнаружить обжору. судя по количеству проходов основного цикла, элементов в массиве аж 59 тысяч.
разобью этот большой массив на несколько кусками по 30 000.


вот и код, и нет ошибок и при передачи этого кода в упаковщик, Chrome таки выводит толстенную форму.

ради интереса проверил этот толстый массив в Mozilla Firefox 19, Opera 12.14, Safari последнем и даже рискнул открыть эту страницу в Internet Explorer 8 и, как и ожидалось, все эти браузеры справились с задачей без разбивки массива.

для какой цели в Chrome внедрено это ограничение, мне не понятно.
видать не зря его называют «ХРОМОГим» 😉

ссылка на оригинал статьи http://habrahabr.ru/post/172015/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *