4 ответов:
Вы не можете переопределить поведение, что если пользователь переходит по ссылке на вашу страницу, нажав кнопку назад, он снова снимет ее.
Но вы можете сделать так, чтобы действия JavaScript на Вашей странице добавляли записи в историю, как если бы они были кликами на новые страницы, и контролировали, что происходит с Назад и вперед в контексте этих кликов.
Существуют библиотеки JavaScript, чтобы помочь в этом, с действительно простой историей , являющейся популярным примером.
Да, можешь. Используйте этот js:
(function(window, location) { history.replaceState(null, document.title, location.pathname+"#!/stealingyourhistory"); history.pushState(null, document.title, location.pathname); window.addEventListener("popstate", function() { if(location.hash === "#!/stealingyourhistory") { history.replaceState(null, document.title, location.pathname); setTimeout(function(){ location.replace("http://www.programadoresweb.net/"); },0); } }, false); }(window, location));Это перенаправит вашу кнопку Назад в нужное место.заменить вы указываете
Я думаю, что это сделает трюк. вы можете написать свой пользовательский код для выполнения в браузере back button click inside onpopstate function. Это работает в HTML5.
window.onpopstate = function() { alert("clicked back button"); }; history.pushState({}, '');
Я предполагаю, что вы хотите создать одностраничное приложение, которое не будет перезагружать веб-сайт при навигации пользователя, и, следовательно, вы хотите отменить собственную функциональность кнопки "назад" и заменить ее своей собственной. Это также может быть полезно в мобильных веб-приложениях, где с помощью кнопки "Назад" внутри приложений обычно закрывают окно приложения, например. Чтобы достичь этого Без библиотеки, вам нужно:
1. во всем приложении измените расположение окна.хэш вместо этого о местоположении.href (это то, что теги будут делать по умолчанию). Например, ваши кнопки могут запускать события "on click", которые изменяют местоположение.хэш такой:
button.addEventListener('click', function (event) { // Prevent default behavior on <a> tags event.preventDefault() // Update how the application looks like someFunction() // Update the page's address without causing a reload window.location.hash = '#page2' })Делайте это с каждой кнопкой или тегом, которые в противном случае перенаправили бы на другую страницу и вызвали перезагрузку.
2-й. загрузите этот код, чтобы можно было запускать функцию при каждом изменении истории страниц (Как назад, так и вперед). Вместо переключателя, который я использовал в этом примере, вы можете использовать if и проверьте наличие других состояний, даже состояний и переменных, не связанных с местоположением.хэш. Вы также можете полностью заменить любое условие и просто запускать функцию при каждом изменении истории.
window.onpopstate = function() { switch(location.hash) { case '#home': backFromHome() break case '#login': backFromLogin() break default: defaultBackAnimation() } }Это будет работать до тех пор, пока пользователь не достигнет первой страницы, которую он открыл с вашего сайта, а затем он вернется на "новую вкладку" или на любой другой сайт, на котором он был раньше. Это не может быть предотвращено, и команды, разрабатывающие браузеры, исправляют хаки, которые позволяют это, если пользователь хочет выйти с вашего сайта по возвращаясь назад, они ожидают, что браузер сделает это.
Comments