Почему мои файлы JavaScript не загружаются «постоянно» в IE7? - PullRequest
13 голосов
/ 24 марта 2009

В случайных случаях файлы JavaScript не загружаются .

Я считаю, что этот диагноз правильный, потому что а) у меня есть код для проверки, б) я прошел через код и в) я получаю сообщение об ошибке «myfunction» is undefined »при использовании функций в этих файлах.

Иногда это не происходит в течение часа, иногда это происходит каждый раз, когда я загружаю страницу, иногда это происходит каждый раз, когда я загружаю страницу. Кажется, что каждый раз, когда я идентифицирую непротиворечивое поведение, чтобы я мог повторить его и диагностировать, оно меняется!

Кто-нибудь знает, что может быть причиной этого?

Я использую:

  • IE версия 7.0.5730.11 (имел & удалена бета-версия IE8)
  • VS2008

Сейчас, похоже, это происходит только с моим коллегой в нашей среде разработки.

Существует один скрипт, который, кажется, пропускает больше, чем любой другой. Вот тег сценария.

<script language="javascript" 
        type="text/javascript" 
        src="js/Ajax.Utility.js?<%= ConfigurationManager.AppSettings["WebApp.JavaScript.FileVersion"].ToString() %>"></script>

Что оценивается в

<script language="javascript" 
        type="text/javascript" 
        src="js/Ajax.Utility.js?090324a"></script>

Параметр строки запроса версии, похоже, также не оказывает никакого влияния, так как у меня была и не возникла проблема сразу после его изменения.

Ответы [ 9 ]

6 голосов
/ 03 октября 2010

Я уже дважды сталкивался с этой проблемой. Это всегда синтаксическая ошибка в коде Javascript. Скорее всего, дополнительный кронштейн или отсутствующий. Все остальные браузеры пропустили его, но IE7 не смог.

Метод проб и ошибок (удаление кусков и кусков кода) привел меня к поиску решения.

Надеюсь, это поможет: -)

5 голосов
/ 25 марта 2009

На всякий случай, если данные ответы не сработали -

IE7 по умолчанию не загружает Javascript из локальных файлов. Обычно вы получаете информационную панель, опускающуюся вниз и указывающую на это. Вы должны нажать на панель и выбрать «Разрешить заблокированный контент», а затем IE7 перезагрузит страницу с включенным Javascript.

Такое поведение соответствует. Однако, если некоторые системы отключают отображение информационной панели, теперь есть способ узнать, в чем проблема.

Я предлагаю добавить тег

4 голосов
/ 09 октября 2011

У меня была та же проблема, что и у оригинального плаката, и я попробовал многие из предложенных решений, но безрезультатно.

Я наконец исправил это, обновив дату и время на машине, на которой работает сервер apache. Он был выключен на пару дней (результат периодического запуска в ВМ)

Надеюсь, это кому-нибудь поможет.

4 голосов
/ 11 августа 2010

Просто к вашему сведению для тех, у кого такая же проблема.

Это никогда не было решено, но теперь я считаю, что это как-то связано с Visual Studio Development Server, и я спрашиваю, произошло ли бы это, если бы я использовал IIS. К сожалению, я больше не работаю над этим проектом, поэтому не могу его протестировать.

2 голосов
/ 24 марта 2009

Вместо src="js/AjaxTry.Utility.js" попробуйте это:

src="<% ResolveUrl("~/path/from/root/to/js/Ajax.Utility.js") %>
1 голос
/ 18 декабря 2018

Большинство браузеров кажутся терпимыми к дополнительным запятым, например, в определении списка свойств объекта:

var obj = {prop1: 'value',
           prop2: 'value',};

Internet Explorer не терпит запятой. Всякий раз, когда у меня была эта проблема, это всегда было связано с дополнительной запятой. Более того, отладчик IE не помечает исходную проблему, он просто выводит отсутствующие определения из файла, который не был загружен должным образом.

1 голос
/ 15 марта 2013

У меня была та же проблема с IE7, проблема была в том, что я использовал 'super' как свойство, которое является зарезервированным ключевым словом, и IE7 молча не загружал страницу.

1 голос
/ 24 марта 2009

Проверили ли вы с помощью инструмента, подобного Fiddler , что вызов этого файла .js выполняется либо на сервер, либо в кеш браузера, и что браузер действительно правильно получает файл, а не получить 404 или что-то подобное?

Вы должны проверить это на странице, которая фактически вызывает рассматриваемый метод - поскольку ваш путь является относительным URL (то есть не начинается с "/"), есть ли вероятность, что страница, с которой вы вызываете его, находится не в папке js, а, возможно, рядом с ней?

Представьте себе структуру сайта из корня сайта:

/page1.aspx
/folder/page2.aspx
/js/Ajax.Utility.js

Если и страница 1, и страница 2 обращаются к файлу .js, фактически только страница 1 сможет использовать его для извлечения правильно - страница 2 будет эффективно искать:

/folder/js/Ajax.Utility.js
1 голос
/ 24 марта 2009

Еще одна мысль: вы очищаете кеш браузера между тестами? Браузер может свободно кэшировать скрипты так, как считает нужным, если это не запрещено - обычно вы замечали это только при редактировании скриптов, таблиц стилей и изображений

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