Почему Javascript иногда не загружается в IE8 - PullRequest
9 голосов
/ 20 февраля 2012

У меня есть внешние файлы javascript, которые загружаются на мою главную страницу.

Иногда в IE8 мои файлы javascript загружаются неправильно, и браузер выдает кучу ошибок, говоря, что объект не распознан.

Если я обновлю страницу, тогда все в порядке.Если я нажимаю на ссылку, проблема иногда возникает снова.

У меня есть метатеги в заголовке для очистки кэша при каждом запросе.

Также я использую head.load длязагружайте мои js-файлы параллельно.

Сценарий head.load находится в моем заголовке, а затем внешние файлы находятся в конце моего тела.

Пожалуйста, помните, что эта проблема возникает только в IE8.Поэтому мой вопрос ... есть ли хак, который я могу использовать, чтобы убедиться, что мои файлы JavaScript загружаются правильно каждый раз, когда страница загружается для IE8?

Любая помощь будет принята с благодарностью.

Обновлено по запросу

<head runat="server">
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
    <meta http-equiv="PRAGMA" content="NO-CACHE" />
    <meta http-equiv="EXPIRES" content="-1" />

    <script type="text/javascript" src="scripts/js/head.load.min.js"></script>
</head>
<body>
<script type="text/javascript">
    head.js("scripts/js/jquery-1.6.2.min.js");
         head.js("scripts/js/jquery.cookie.js");
    head.js("lib/gritter/jquery.gritter.min.js");
    head.js("lib/fancybox/jquery.easing-1.3.pack.js");
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js");
    head.js("scripts/js/jquery.microaccordion.js");
    head.js("scripts/js/jquery.stickyPanel.js");
    head.js("scripts/js/guidely.js");
    head.js("scripts/js/pto.js");
</script>
</body>

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Хорошо, проблема в том, как файл head.load загружает мои внешние файлы в IE8.Если я загружаю jquery до того, как загружу свой файл head.load, а затем параллельно загружаю внешние файлы в конце страницы, то на их странице нет ошибок.

Это определенно решение, но я бы хотелчто даже jquery может быть загружен в голову без ошибок JavaScript в IE.Я уверен, что это не будет ошибкой в ​​последних версиях.

Спасибо всем за вклад.

@ frederic - я работаю в компании, в которой работает 188 000 сотрудников.Если у них в браузере установлено дополнение, вызывающее сбой моей страницы, я ничего не могу с этим поделать.Я также не думаю, что эта проблема вызвана какими-либо дополнениями.Я думаю, что именно то, как head.load обрабатывается в IE8.

@ Shard - я не думаю, что вы понимаете, о чем я спрашиваю, и если это так, то извините за то, что я не стал более понятным.В любом случае, я нашел решение, так что спасибо за ваш вклад.

<head runat="server">
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
    <meta http-equiv="PRAGMA" content="NO-CACHE" />
    <meta http-equiv="EXPIRES" content="-1" />
    <script type="text/javascript" src="scripts/js/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/js/head.load.min.js"></script>
</head>

<script type="text/javascript">
    head.js("scripts/js/jquery.cookie.js");
    head.js("lib/gritter/jquery.gritter.min.js");
    head.js("lib/fancybox/jquery.easing-1.3.pack.js");
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js");
    head.js("scripts/js/jquery.microaccordion.js");
    head.js("scripts/js/jquery.stickyPanel.js");
    head.js("scripts/js/guidely.js");
    head.js("scripts/js/pto.js");
</script>
0 голосов
/ 12 марта 2013

Посмотрите на страницу http://headjs.com/ в разделе Использование, вы точно увидите, что не так с вашим кодом:

// файлы загружаются параллельно и выполняются в порядке поступления head.js ( "file1.js"); head.js ( "file2.js"); head.js ( "file3.js");

Ваши скрипты загружаются параллельно и выполняются во время прибытия, что очень плохо для deps в jquery, если вы хотите, чтобы они выполнялись по порядку, используйте это:

head.js("scripts/js/jquery-1.6.2.min.js",
        "scripts/js/jquery.cookie.js",
        "lib/gritter/jquery.gritter.min.js"),
        "lib/fancybox/jquery.easing-1.3.pack.js",
        "lib/fancybox/jquery.fancybox-1.3.4.pack.js",
        "scripts/js/jquery.microaccordion.js",
        "scripts/js/jquery.stickyPanel.js",
        "scripts/js/guidely.js",
        "scripts/js/pto.js");

Вам нужно вызывать js со списком ресурсов для загрузки, а не просто вызывать js несколько раз.

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