Закрытие панели меню на кнопке «Назад» (выпуск Safari) - PullRequest
1 голос
/ 21 октября 2011

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

развивавший:

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, возможно, я пока с этим справлюсь.

1 Ответ

1 голос
/ 21 октября 2011

Как упомянуто в комментарии, вы должны иметь возможность переопределить поведение, которое я прикрепляю closeDrawer к событию click ссылки на ящик. Что-то вроде:

$('div[id|="menu"] a').click(function(){
  // first, close the drawer
  closeDrawer();
  // now just let it carry on with following the link
  // (don't try to return false or event.preventDefault)
});

Или, точнее говоря:

$('div[id|="menu"] a').click(closeDrawer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...