Я реализую Comet, используя метод длинных опросов тега script, основанный на этой странице . Исходя из моего предыдущего вопроса , у меня все работает, кроме одного раздражения, которое происходит только в Firefox.
При начальной загрузке страницы мой клиент Comet JavaScript отправляет два запроса на сервер Comet (в виде динамически генерируемых тегов <script>
, которые добавляются в DOM):
get_messages
- это текущий опрос сообщений из приложения.
initialise
- это однократный запрос при запуске.
Эти два происходят одновременно - т. Е. Теги <script>
для них обоих существуют в DOM одновременно. (Я вижу их в инспекторе Firebug DOM.) Сервер немедленно отправляет некоторый сценарий в ответ на запрос initialise
, но ничего не отправляет для запроса get_messages
, пока на самом деле не появится сообщение, которое может занять некоторое время.
В Firefox 3.5 сценарий, возвращенный в теге <script>
для запроса initialise
, не выполняется, пока другой тег <script>
(для get_messages
) также не загрузится! В Chrome 3 и IE 8 это работает нормально - скрипт выполняется сразу после его получения.
Почему Firefox делает это и как мне это исправить? Я полагаю, я мог бы попытаться обойти это на сервере, отправив фиктивное «сообщение» в то же время, что и ответ initialise
, но это довольно взломано. Я хотел бы понять и исправить это должным образом, если это возможно.