#javascript #browser-history #urlvariables
#javascript #история браузера #переменные URL
Вопрос:
карта Google делает это так, что если я перейду, скажем, в Австралию, URL-адрес изменится на
https://www.google.com/maps/@-28.0345854,135.1500838,4z
Я заинтересован в том, чтобы сделать что-то подобное в моем веб-приложении. Пока у меня есть это:
var baseurl = window.location.href.split("/@")[0]
window.history.replaceState( {} , 'foo', baseurl '/@foo' );
который отлично работает для добавления «/ @foo» к URL-адресу
Моя проблема в том, что после добавления / @foo URL-адрес не работает, он 404.
Я не заинтересован в изменении истории браузера, поэтому я использую replaceState вместо pushState.
в любом случае, есть ли способ сделать это с помощью js? или мне нужен серверный код для обслуживания соответствующей страницы?
спасибо
Ответ №1:
Вам «нужен код на стороне сервера для обслуживания соответствующей страницы». @
символ по-прежнему является частью URL-адреса и поэтому должен обрабатываться сервером. Если вы хотите обрабатывать такого рода ситуации только на стороне клиента, то вместо этого вы хотите использовать #
. все, что после хэша, обрабатывается на стороне клиента и не запускает загрузку новой страницы с сервера.
Несколько библиотек используют это для репликации маршрутизации в одностраничном приложении только для HTML. Например:
И многое другое.