Как через javascript осуществить манипуляцию с адресной строкой?

Такие дела.

Была у меня задача: при открытии модального окна изменять адресную строку, чтобы можно было отправить адрес другому пользователю и у него это окно открывалось.
Одновременно с этим, надо, чтобы при открытии определенного адреса не только открывалось модальное окно, но и изменялись некоторые параметры на странице - они меняются с помощью php, т.к. для шеринга надо, чтоб изначальная страница содержала в себе нужную информацию.

Решили все галимым костылем.
Изменение строки осуществляли с помощью хэшей, чтоб пользователи друг с другом делились.
А вот для php прописали обработку GET-параметров.
Убого. Так как в JS приходилось при загрузке страницы проверять и хэши и GET-параметры.

Так вот. Как можно было решить эту задачу по-другому?
Идеально: при открытии модалки адрес меняется не на /palette#c304, а на /palette/c304/ - как при ajax переходах по странице. Но я не особо шарю в том как изнутри работает SPA
  • Вопрос задан
  • 336 просмотров
Решения вопроса 2
@Kanonier8
Как вам уже написали, для манипуляций с адресной строкой следует использовать HTML5 History API
Думаю эти первые ссылки из гугл помогут вам разобраться в вопросе.

https://habrahabr.ru/post/123106/
https://developer.mozilla.org/ru/docs/Web/API/Hist...
https://css-tricks.com/using-the-html5-history-api/

ну и еще пример с использованием history.js для динозавром
https://astrio.ru/blog/History-API/
Ответ написан
archakov06
@archakov06
Frontend-разработчик (ReactJS)
javascript location pushstate. У меня сайт асинхронный, вот и этим способом и делал смену ссылки в адресной строке
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@frees2
Так у меня уже лет шесть работает, только не локацион.... Надо еще правильно в .htaccess тоже прописать релоад. ........
<span onclick="player.loadVideoById(\''.$videoId.'\', 0);history.pushState(\''.$videoId.'\', null, \''.$videoId.'\');document.title = \''.$title3.'\';return false">&#9668; &nbsp;&nbsp; <img src="'.$thumbnails.'" align="right" hspace=" 4px" width="60" height="47" > &nbsp;&nbsp;'.$title.'</span>  <br> <button type="submit" name="message" value="'.$title.',live5" style="border: 0; cursor: pointer;  background: transparent">
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы