Возможно переписать URL-адрес клиента с помощью javascript без перезагрузки страницы

Можно ли переписать URL-адрес в URL-поле в браузере клиента?

Итак, когда человек нажимает на ссылку на моей странице, происходит что-то вроде ajax (например, появляется вкладка). Я хочу, чтобы url отображал действие без обновления страницы.

Возможно ли это?

Ответы

Ответ 1

Вы можете изменить хеш/якорь части URL (после #). Остальная часть URL-адреса только для чтения.

location.hash = "#value";

Ответ 2

Когда все остальные ответили на этот вопрос, они были правы, изменить URL-адрес в javascript не удалось. В HTML5 и современных браузерах теперь используется HTML5 History API

diveintohtml5.info статья об этом. Здесь - еще одно хорошее сообщение в блоге, объясняющее эту функцию.

Отметьте caniuse.com совместимость браузера.

Существуют библиотеки, такие как History.js, которые обертывают API и pollyfill, используя hashbangs для старых браузеров.

Ответ 3

Переписывание URL-адресов невозможно, но очень часто добавляется действие с хешем. Например, Facebook использует его широко:

http://www.facebook.com/#!/username
                        ^

Все, что после хэша, просто привязывает данные на той же странице, которые вы можете изменить с помощью script в течение всего дня.

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

Ответ 4

Единственное возможное решение - добавить якорь. Затем вы можете использовать что-то вроде reallysimplehistory, чтобы пользователь мог закладок на странице или использовать кнопку "Назад" внутри вашей страницы.

Я тоже сделал это с вкладкой в ​​прошлом.