Как предотвратить двойное обновление на frameset - PullRequest
0 голосов
/ 20 января 2012

У меня есть ситуация, когда нажатие клавиш F5 или CTRL + R приводит к тому, что набор кадров загружает кадр дважды. Это происходит на локальном хосте, но поскольку я только собрал пример для этого вопроса и загрузил его, я заметил, что он зависит от браузера.

Посещение ссылки в первый раз или нажатие на адресную строку браузера и нажатие клавиши ввода выполняет «обычное обновление», если необходимо.

Тестовый пример, который я собрал ниже, имеет 2 кадра, один оставлен пустым. Когда загружается frame1.html, frameset затем устанавливает src для frame2, который затем загружает frame2.html. Оба должны предупреждать только один раз, но вы увидите, что это не так для frame2.html.

Поведение-на-браузера:

  • Chrome16 & Safari5.1 работает как положено и localhost / live
  • FF9 удвоение на локальном хосте, работает как и ожидалось вживую
  • IE9 удвоение на обоих localhost / live
  • еще не тестировал другие / более старые браузеры, но я ожидаю некоторой агонии

Я попытался очистить атрибут src в событии unload фрейм-набора в надежде, что он хотя бы ничего не загрузит, прежде чем выполнить удвоение и затем загрузку frame2.html, но даже если это сработало (но не сработало) противный.

Мои вопросы:

  1. Почему происходит двойное обновление, когда оно происходит?
  2. Есть ли способ предотвратить удвоение?

Вот ссылка: http://codefinger.co.nz/public/frameset_test/frameset.html, а также rar'd файлы: http://codefinger.co.nz/public/frameset_test/frameset_test.rar

1 Ответ

0 голосов
/ 25 января 2012

Хорошо, отсутствие объяснения привело меня в бешенство, но я нашел способ остановить это непоследовательное поведение по умолчанию.

Я слушаю событие frameset window.unload (YUI3.5) и вообще удаляю двойной узел кадра. Удвоение уходит, все выглядит нормально.

Успешно протестировано на (как на локальном, так и на живом сервере):

  • Chrome 16.0.912
  • Firefox 3.6, 9.0.1
  • IE 6,7,8 & 9
  • Safari 5.1

Не работает в:

  • Opera 11.61 (я не могу получить доступ к элементу frameset и манипулировать им)

Я все равно +1 за любые объяснения относительно , почему удвоение загрузки набора кадров происходит в первую очередь.

...