У меня есть несколько файлов, которые я объединяю и упаковываю для создания единого миниатюрного JS-файла. Проблема в том, что когда я уменьшаю файл (используя упаковщик), IE6 выдает одно из своих характерных полезных сообщений об ошибках.
Line: 12 // of course, line 12 is an empty line
Char: 1
Error: Expected ')'
Code: 0
Дело в том, что он отлично работает в IE7, Firefox и Chrome, проблема возникает только в IE6.
Распаковал, у меня почти 200кб скриптов разложено по 8 файлам. Как мне это исправить?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У Microsoft есть свой способ сделать это:
http://blogs.msdn.com/ie/archive/2004/10/26/247912.aspx
http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html
Как сказано в 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
Где ~ / путь / к / - это путь к тому месту, где находится ваш файл javascript, scriptname.min.js - это имя минимизированного / запутанного конечного результата, а scriptname.js - исходный файл.
Я полагаю, вы не можете просто «забыть» об IE6? Одно из моих новогодних пожеланий - чтобы последние 23% пользователей IE6 в Интернете наконец-то обновились до более приличного / современного браузера :-).
Надеюсь это поможет!
-Дэйв
это очень распространенная проблема с ie6, вы должны обратить внимание на замыкания в вашем коде,
операторы условия должны быть с {-} ... и функцией тоже.
if (){
}
function(){
};
вы должны положить; в конце каждого оператора, если нет, строки сольются во что-то, что браузер не сможет понять.
Я использую jslint.com для отладки javascript. найдите «отсутствующую точку с запятой» в списке ошибок.
Вы уже убедились, что неминифицированный код может успешно работать в IE6? Если это так, поскольку это синтаксическая ошибка, а не ошибка времени выполнения, следующий шаг, который я предприму, - это уменьшить вдвое javascript, минимизировать его и посмотреть, когда проблема перестанет сообщаться. Затем продолжите двоичный поиск оттуда.
По памяти, я думаю, что способ, которым я решил эту проблему в конце концов, и способ, которым я обычно решаю проблемы с минимизированным кодом сейчас, - это запустить его через JSLint. Его необычайная строгость позволяет выявить проблемы (например, отсутствие точек с запятой), которые не вызывают проблем в неминифицированном коде. Вам придется тащиться через множество сообщений, которые на самом деле не связаны с ошибкой, но проблема будет где-то там!