Порядок выполнения Javascript в IE6 - PullRequest
1 голос
/ 29 октября 2009

Разве блоки Javascript не должны выполняться в том порядке, в котором они размещены на странице?

IE6, похоже, не следует этому правилу в некоторых ситуациях. Моя страница в основном выглядит так:

<html>
<head>
    <title>Widget Sandbox</title>
    <script type="text/javascript" src="http://domain2.com/script.js"></script>
</head>
<body>
    <script type="text/javascript">
        myObj.doSomething();
    </script>
</body>
</html>

Эта страница размещена в одном домене, а скрипт вверху - во втором домене. Объект myObj определен во внешнем сценарии и используется в блоке локального сценария. Время от времени блок скрипта в <body> выполняется до того, как скрипт, на который есть ссылка в <head>.

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

Ошибка будет "myObj undefined", за которой следует номер строки.

Кто-нибудь имеет представление о том, что я могу делать неправильно? Это происходит только в IE6. В противном случае скрипт отлично работает в IE6 95% времени.

Ответы [ 2 ]

2 голосов
/ 29 октября 2009

Однажды у меня была проблема, очень похожая на ту, которую вы описываете.

Это случилось только с определенной версией IE6. JS был распакован веб-сервером, и IE 6 выполнил мой скрипт перед JS, после того, как он был загружен, но до того, как он был разархивирован ... очень странно ....

это решено, когда я отключил gzip в моем apache для запросов IE6. (не знаю, сможете ли вы это сделать) Альтернативой является установка таймера для проверки, определен ли MyObj ....

0 голосов
/ 29 октября 2009

Наиболее вероятное объяснение состоит в том, что первый скрипт иногда не загружается из-за чего-то, например, из-за сброса соединения сервером, из-за того, что сервер вернул ошибку 503 Service Unavailable , или по какой-то подобной причине.

Попробуйте запустить отладчик HTTP, например Fiddler ; затем, когда возникает ошибка, вы можете проверить цикл запроса / ответа HTTP, чтобы увидеть, в чем проблема.

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