копировать поведение URL-адреса Google Maps с помощью javascript? url «/@foo»

#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. Например:

И многое другое.