Как изменить URL, отображаемый в браузере, не покидая страницу

возможно ли с помощью JavaScript изменить URL браузера, но не покидать страницу?

4 ответов


в старых браузерах, вы можете не измените url в адресной строке, не покидая страницу. Но вы можете изменить хэш-часть URL-адреса, не покидая страницу. То есть вы можете изменить www.example.com to www.example.com#new_text С JavaScript window.location.hash = "new_text"; все, что после # можно изменить.

однако в HTML5 есть новый API истории, который позволяет вам изменять часть URL после домена. Таким образом, вы все еще не можете изменить www.example.com to www.BankOfAmerica.com (для соображениям безопасности), но вы можете изменить www.example.com/foo to www.example.com/bar.

history.pushState("object or string representing the state of the page", "new title", "newURL");

Регистрация когда я могу использовать... чтобы узнать, какие браузеры поддерживают управление историей сеансов HTML5 и поддерживают новый pushState метод.

кроме того, существует библиотека JavaScript, которая нормализует API истории в браузерах и изменяет URL-адрес в новых браузерах и использует хэш-часть для старых браузеров. См.история.js .


Я собираюсь предположить, что вы говорите о видимом URL-адресе в строке URL.

ответ Нет, это серьезная уязвимость безопасности, когда приложение пытается обмануть пользователей, думая, что на другом сайте.


вы можете изменить что-либо после хэш-метки (#), поскольку это часто используется в приложениях Ajax, таких как Google search и новый Twitter. (Вот почему все появляется после хэш-метки в этих приложениях.) Но если вы измените что-нибудь еще, страница должна быть перезагружена.


нет, это невозможно. И, когда это возможно, это ошибка браузера (я знаю о предыдущих ошибках безопасности, связанных с этим поведением, и они были исправлены в прошлом).

на самом деле... Вы можете изменить последнюю часть URL-адреса, что после # символ. Но имя хоста и путь не могут быть изменены, не покидая страницу.