Сбой упакованного / сжатого JavaScript в IE6 - как отладить? - PullRequest
0 голосов
/ 07 января 2009

У меня есть несколько файлов, которые я объединяю и упаковываю для создания одного минимизированного файла JS. Проблема в том, что когда я минимизирую файл (используя упаковщик ), IE6 выдает одно из характерных полезных сообщений об ошибках.

Line: 12      // of course, line 12 is an empty line
Char: 1
Error: Expected ')'
Code: 0

Дело в том, что он отлично работает в IE7, Firefox и Chrome, проблема возникает только для IE6.

Распаковано, у меня почти 200 КБ скриптов, распределенных по 8 файлам. Как же я могу это исправить?

Ответы [ 5 ]

1 голос
/ 21 января 2010

Вы уже убедились, что неминифицированный код может успешно работать в IE6? Если это так, потому что это синтаксическая ошибка, а не ошибка времени выполнения, следующий шаг, который я сделаю, - это наполовину сократить javascript, свернуть его и посмотреть, когда проблема перестает сообщаться. Затем продолжите бинарный поиск оттуда.

1 голос
/ 07 января 2009

Как сказал CMS, YUI-компрессор - отличный инструмент для сжатия и запутывания вашего кода, попробуйте это.

Я использую следующий код в моих файлах JavaScript. Я работаю на OSX, но команда должна быть идентичной в Linux и, возможно, также в Windows (хотя я никогда не пробовал).

java -jar /path/to/yuicompressor-2.4.jar --charset utf8 -o ~/path/to/scriptname.min.js ~/path/to/scriptname.js 

Где ~ / path / to / - это путь к файлу javascript, scriptname.min.js - это имя свернутого / скрытого конечного результата, а scriptname.js - исходный файл.

Я полагаю, вы не можете просто "забыть" о IE6? Одно из моих новогодних пожеланий состоит в том, чтобы последние 23% пользователей IE6 в Интернете наконец обновились до более приличного / современного браузера: -).

Надеюсь, это поможет!

-Dave

1 голос
/ 07 января 2009

это очень распространенная проблема с ie6, Вы должны обратить внимание на замыкания в вашем коде,

операторы условия должны быть с {-} ... и функционировать тоже.

if(){
}

function(){
};

ты должен поставить; в конце каждого оператора, если нет, строки сливаются во что-то, что браузер не может понять.

Я использую jslint.com для отладки JavaScript. найдите «пропущенную точку с запятой» в списке ошибок.

1 голос
/ 07 января 2009
0 голосов
/ 22 января 2010

По памяти, я думаю, что способ, которым я решил эту проблему в конце, и способ, которым я обычно решаю проблемы с минимизированным кодом, это запустить его через JSLint . Его необычайная строгость подберет проблемы (например, пропущенные точки с запятой), которые не вызывают проблем в не минимизированном коде. Вам придётся пройтись по множеству сообщений, которые на самом деле не являются ошибкой, но проблема будет где-то там!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...