У меня есть всплывающее окно на моем веб-сайте, похожее на средство просмотра фотографий facebook. Когда модальное окно открыто, оно отображает содержимое с другой страницы, и я хочу изменить значение адресной строки и историю, чтобы показать это.
В модальном окне есть раскрывающийся список, который изменяет содержимое модального окна на содержимое другой страницы. Когда это происходит, я снова хочу изменить значение адресной строки и историю, чтобы показать, что страница была изменена.
По сути, я хочу точно воспроизвести поведение программы просмотра фотографий facebook, которую вы можете попробовать, выполнив следующие действия:
- Нажав на эту ссылку
- Нажав на
Photos
- Нажав на фото на странице
- Щелкните стрелку вправо или влево (или используйте клавиши со стрелками на клавиатуре), чтобы изменить изображения.
- а) нажмите кнопки истории назад и вперед в браузере
- б) щелкните из средства просмотра фотографий
Я попытался создать JSFiddle, чтобы показать, где я нахожусь с этим, но JSFiddle, по-видимому, не позволяет манипулировать историей. Таким образом, я разместил свой код здесь, и который можно скачать отсюда.
Несколько ключевых моментов:
- Начните с просмотра главной страницы, затем используйте ссылку для перехода на тестовую страницу.
- Когда модальное окно закрыто, нажатие кнопки "Назад" не должно снова открыть модальное окно, а вместо этого должно вернуть вас на главную страницу.
- После закрытия модального окна нажатие кнопки «вперед» должно снова открыть модальное окно в исходном состоянии, как это делает программа просмотра фотографий facebook.
- В моем производственном коде полный URL-адрес будет изменен вместо добавления/изменения переменной в URL-адресе, как показано в демонстрационном коде.
replaceState
? - person Daniel A. White   schedule 19.12.2014popstate
событие ? - person Karl-André Gagnon   schedule 19.12.2014popstate
— это событие, которое вы ловите, а не функция, которую вы вызываете для удаления элемента из истории. - person Nate   schedule 19.12.2014.back()
. - person Karl-André Gagnon   schedule 19.12.2014window.history.back()
не следует перезагружать страницу, если ты использовалpushState
. У вас должна быть проблема где-то еще. Протестируйте его в консоли. Введитеwindow.history.pushState({}, "page 2", "bar.html");
, URL-адрес изменится, затемwindow.history.back();
URL-адрес вернется к текущему без перезагрузки. - person Karl-André Gagnon   schedule 19.12.2014popstate
пригодится. Вам нужно проверить, когда это событие запускается, если страницаmysite.com/anotherpage
, если это нет, вам нужно закрыть всплывающее окно. - person Karl-André Gagnon   schedule 20.12.2014