Я пытаюсь закрыть свой ящик с пользовательским меню, когда пользователь нажимает кнопку «Назад». Прямо сейчас, этот недостаток дизайна - единственный способ, которым ящик остался бы открытым без зависания. Желание, чтобы только зависало, могло держать ящик открытым.
развивавший:
1 - При наведении курсора меню открывается ящик.
2 - Когда вы щелкаете ссылку в меню (или в ящике), оставляя страницу, ящик
останется открытым на странице, которую вы только что оставили.
3 - Когда вы используете кнопку браузера «назад», чтобы вернуться на страницу, которую вы только что покинули, вы будете
см. ящик меню, который был оставлен открытым.
4 - Единственный способ закрыть застрявший ящик открытого меню - навести курсор и оставить его.
Я попробовал очевидное: использовать события «unload» или «before unload». Это не работает, потому что мышь все еще зависает над элементом при выгрузке. При наведении курсора ящик остается открытым, а событие разгрузки пытается закрыть. (я удалил сломанную функцию «выгрузить» из демо.)
http://jsfiddle.net/sparky672/rNzPR/
Полная демонстрация с внешними ссылками, чтобы можно было проверить кнопку возврата ...
http://jsfiddle.net/sparky672/rNzPR/show/
В любом случае, результат тот же ... при нажатии кнопки «назад» ящик с «последним использованным» меню остается открытым, и единственный способ закрыть его - «навести и оставить» снова.
Меня интересуют предложения об обходном пути, чтобы он не открывался в первую очередь или, по крайней мере, чтобы не требовалась последовательность ввода / вывода, чтобы закрыть его ... в зависимости от того, что проще .
(Демонстрация содержит границы прозрачных контейнеров только для целей разработки. Реальная система не так уж и страшна.)
EDIT:
Я вижу проблему в Safari 4 и 5 и Firefox 3
В Firefox 4 и 7 проблема возникает, но как только вы перемещаете указатель мыши в любом месте окна, меню закрывается. (достаточно хорошо)
Я не вижу проблемы в IE 8, IE 9 или Chrome.
Похоже, что некоторые браузеры должны улучшать или изменять то, как они справляются с «до / после кэша» в отношении jQuery $(document).ready
, потому что единственный способ не иметь эту мою проблему, это для кнопки «Назад» для новых вызвать код в $(document).ready
.
Поскольку это выглядит в основном как проблема Safari, возможно, я пока с этим справлюсь.