#javascript #debugging #internet-explorer-9
#javascript #отладка #internet-explorer-9
Вопрос:
Я использую IE9 для отладки веб-приложения. Я внес некоторые изменения в javascript после загрузки страницы. Я не могу заставить IE9 остановиться на новом коде. Сообщение «Код в документе не загружен«. Я могу установить точки останова, когда я не отлаживаю, но они не будут действительными, когда я начну отладку. Я использую режим просмотра IE7, режим документа IE7.
То, что я пробовал:
- закройте окно инструментов разработки, снова откройте
- остановить отладку, начать отладку
- Ctrl R в окне инструментов разработки (аналогично кнопке Очистить кэш браузера)
- Ctrl R на веб-странице IE9
- Ctrl F5 на веб-странице Ie9
- Очистить кэш браузера для этого домена
- Проверить (установить) Всегда обновляйте кэш с сервера
Следующее, что нужно попробовать (я думаю), это полностью закрыть IE. Это исправление для этого? Если да, то фу. Мне требуется пара минут, чтобы настроить страницу, поэтому делать это после каждого изменения JS действительно воняет. Я могу использовать FF4 для разработки JS, но проблема JS, которую я вижу, специфична для IE7, поэтому я должен сделать это таким образом.
>> Как я могу заставить IE9 (работающий в режиме IE7) надежно отлаживать самый актуальный JS с сервера?
Ответ №1:
Эта проблема не была связана с кэшированием и т.д. IE9 обнаружил ошибку скрипта (отсутствует закрывающий параметр) в новом коде и не допускал точек останова нигде в скрипте. IE, казалось, очень спокойно относился к ошибке скрипта. В любом случае, исправление ошибки скрипта устранило проблемы с точками останова / кэшированием.
Комментарии:
1. Кэширование — главная причина потери времени в моей разработке. Отсутствие круглых скобок — близкий номер два.
Ответ №2:
Если у вас есть доступ к коду:
В вашей ссылке на файл javascript добавьте строку запроса, что-то вроде этого:
<script src="Scripts/main.js?v=1" type="text/javascript"></script>
И каждый раз, когда вы вносите изменения в файл js, меняйте v
значение на что-то другое, например, чтобы браузер почувствовал, что это новый файл, и получил его.
Комментарии:
1. просто не используйте этот метод в рабочей среде, поскольку он может испортить кэширование stevesouders.com/blog/2008/08/23 /…
2. Да, но это может быть полезно, когда вы хотите, чтобы все пользователи вашего веб-сайта получили изменения, которые вы сделали в последней версии.
3. Хм, похоже на то, о чем можно легко забыть перед развертыванием prod. Неплохая идея, но я надеялся на что-то более специфичное для IE9. Похоже, у FF4 нет проблем с этим >:-(
Ответ №3:
Добавьте это:
window.applicationCache.addEventListener('updateready', function (e)
{
if (window.applicationCache.status == window.applicationCache.UPDATEREADY)
{
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?'))
window.location.reload();
}
}, false);
Я нашел это решение где-то в Сети. Извините, но я не помню автора. У меня это работает, когда я отлаживаю веб-приложение с помощью JavaScript в Visual Studio и использую IE.
Ответ №4:
Я нашел этот вопрос на основе сообщения об ошибке «код в документе не загружен». Я не использую режим документа IE7 или что-либо подобное, только IE9.
Как и в jcollum, моя проблема не была связана с кэшированием.
Я использую MVC.Net и кто-то настроил часть javascript, чтобы полагаться на строку в ViewBag. Я изменил пару вещей, и эта строка ViewBag исчезла, поэтому результирующий javascript выглядел примерно так:
if(!()) {
// Some code
}
Javascript умер прямо здесь и не обрабатывал остальную часть кода в блоке. Это сбивало с толку, поскольку он все еще пытался выполнить javascript в другом наборе тегов скрипта, но который полагался на переменную, установленную в другом блоке, который он не загружал.
Итак, по сути, синтаксическая ошибка была введена странным образом, и отладчик отказался загружать часть кода, который появился после нее. Еще один урок об опасностях ViewBag.