при тестировании одной страницы мой клиент заметил, что только в 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/
Добавить комментарий