Сбой упакованного / минимизированного javascript в IE6 - как отлаживать?

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

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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 547
5

Ответы 5

Как сказано в 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. Его необычайная строгость позволяет выявить проблемы (например, отсутствие точек с запятой), которые не вызывают проблем в неминифицированном коде. Вам придется тащиться через множество сообщений, которые на самом деле не связаны с ошибкой, но проблема будет где-то там!

Другие вопросы по теме