Я работаю над сравнительно большой кодовой базой ECMAScript (> 60 000 LOC), и мы склонны немного бороться с обнаружением ошибок для нашего страшного друга Internet Explorer (особенно 6 и 7).
В данный момент яМы застряли с проблемой в течение 3 дней, когда моя RIA хорошо отрисовывается в Google Chrome, Firefox 3.6, Opera и Internet Explorer 8, но не работает при запуске Internet Explorer 8 в режиме IE7 (или с настоящим IE-7).
Мой вопрос на самом деле таков: как вы определяете код, который будет вызывать ошибку в IE7?
Обычно я полагаюсь на JSLint и склоняюсь к ловле обычных подозреваемых (конечные запятые, я ненавижувы), но в данном конкретном случае я только что повторно запустил линтер для всего своего кода, как исходного, так и свернутого, и это не дает моих обычных подозреваемых.Так что, я думаю, я по ошибке ввел что-то, что не нравится IE (кто знает, может, я сошел с ума и использовал где-нибудь Array.map вместо dojo.map?), И это взрывается у меня на лице, создавая хорошие сообщения об ошибках, которые немне вообще ничего не помогает («[объект объект]» и «ноль» там, где это не должно быть, поэтому я предполагаю, что произошла восходящая ошибка, которая молча завершилась неудачей и не позволила создать этот объект).
Я попытался взглянуть на Google Closure Linter, но он ничего особенного не дает, и я не думаю, что Google Closure Compiler будет моим спасителем.Есть ли какой-либо инструмент (командная строка, веб-служба или другой), который может анализировать / запускать код, как если бы он эмулировал IE, чтобы мы могли получить соответствующие ошибки?
Любые советы приветствуются.
РЕДАКТИРОВАТЬ: Спасибо за вашу помощь в попытке решить мою проблему до сих пор, но на самом деле я просто спрашиваю, есть ли инструменты, которые делают такого рода проверки, что означает проверку набора функций и синтаксиса для конкретного браузера.На мой взгляд, этого не хватает в мире JS (не так много для FF или Chrome, очевидно, поскольку их отладчики немного более полезны).
РЕДАКТИРОВАТЬ 2: В конце концов я нашел кореньМоя проблема сегодня (через 3 дня): я прошёл через все изменения моего кода между двумя ветвями и понял, что проблема на самом деле уже была, но никогда не обнаруживалась ранее, и прошёл через ещё более старые изменения, чтобы сузить беспорядок и, в конце концов, добавить журналы консоли.везде, пока я не достиг точки отказа (Боже, спасибо emacs за поддержку регулярных выражений для добавления журналов в каждую строку ... тяжело, но работает ...).Интересный факт: IE проглотил сообщение об ошибке, которое должно отображаться в блоке try catch, первоначально перехватив исходную проблему, а затем перезапустил ее.До сих пор не знаю почему, но если бы этого не было, найти его было бы намного проще, так как он был предназначен для этой цели на случай, если он сломается.Weird.Не похоже на глубокие уровни повторного броска.
Я оставлю вопрос открытым, так как пока нет ответа на настоящий вопрос.