Internet Explorer 6 прерывает запрос страницы при выполнении JavaScript - PullRequest
0 голосов
/ 11 февраля 2009

Сценарий такой. Веб-страница содержит:

  • некоторые DIV, видимость которых можно переключать с помощью JavaScript (запускается по гиперссылке)
  • a Кнопка отправки, ответ которой занимает около 5 секунд

Код гиперссылки

<a href="javascript:void null;" onclick="MyFunction()">foo</a>

Пользователь:

  1. Прессы Отправить.
  2. Пока он ждет ответа, он нажимает на гиперссылку и запускает JavaScript, который переключает видимость DIV (другой запрос не выполняется).
  3. В Internet Exporer 6 браузер перестает ждать первого запроса.

Проблема не возникает в других браузерах, даже если пользователь играет с DIV, первый запрос корректно обрабатывается, и мы переходим на следующую страницу.

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

Ответы [ 4 ]

3 голосов
/ 11 февраля 2009

Да, это IE6 проблема с GET запросами , вызванными действием Javascript на гиперссылке ( где href установлен в 'javascript: ...' ).

например. если ваш JavaScript вызывает someForm.submit() и метод GET, будет NO ответ ( хотя запрос определенно отправлен)

http://webbugtrack.blogspot.com/2007/09/bug-223-magical-http-get-requests-in.html

Вам нужно либо изменить ссылку, чтобы она выглядела так:

<a href="#bogushash" onclick="MyFunction()">foo</a>
         ^^^^^^^^^^

или всегда устанавливать ссылку с возвратом false;

<a href="javascript:void null;" onclick="MyFunction();return false;">foo</a>
                                                      ^^^^^^^^^^^^^
1 голос
/ 11 февраля 2009

javascript:void null должно быть javascript:void(0), еще лучше href="#". Если MyFunction возвращает false, то return false в ответе scunliffe не требуется, используя onclick="return MyFunction()"

1 голос
/ 11 февраля 2009

Я не думаю, что разумно называть javascript: void null; по ссылке. Это может быть причиной вашей проблемы. Вместо этого href содержит действительную ссылку, но не позволяет действию по умолчанию завершить запрос

<a href="#" onclick="return MyFunction(event)">foo</a>

, где

function MyFunction(e)
{
  if (!e) e = window.event;

  // your code

  if (e.preventDefault) e.preventDefault();
  return false;
}
0 голосов
/ 11 февраля 2009

Так как это проблема. Я бы предложил использовать псевдо-«загрузочный» спиннер, который перекрывает кликабельный контент при срабатывании подтверждения.

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