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

70
10

Можно ли переписать URL-адрес без перезагрузки страницы через jQuery/Javascript?


Скажем, у вас есть следующий URL-адрес:


http://stackoverflow.com/questions/ask


можно добавить значение: /pId=XYZ


Итак, вы можете получить


http://stackoverflow.com/questions/ask/pId=XYZ


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

спросил(а) 2012-08-17T16:08:00+04:00 8 лет, 1 месяц назад
1
Решение
98

Все, что вы можете изменить без перенаправления, это хэш-часть URL:

document.location.hash = "whatever";

ответил(а) 2012-08-17T16:11:00+04:00 8 лет, 1 месяц назад
89

Да, вы можете, и вам не нужен jquery: просто используйте API истории: https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history

Остерегайтесь, что обычно сложно обрабатывать историю в сложном приложении ajax, так как вам приходится обрабатывать государственную сериализацию страниц, загрузку состояния и т.д. И вы не можете применить это к плохо спроектированному сайту, как и многие аяксифицированные сайты. И это не будет работать на "старых" браузерах, таких как IE9.

ответил(а) 2012-08-17T16:09:00+04:00 8 лет, 1 месяц назад
57

вы можете получить текущий Url с


var url = document.location.href;

то вы добавите часть в URL


url += "/mySubFolder";

остальное мое сообщение не соответствовало вопросу... я должен более внимательно прочитать:(!

ответил(а) 2012-08-17T16:14:00+04:00 8 лет, 1 месяц назад
57

Да, мы можем, но только в браузерах, реализующих pushState.


См. другие ответы здесь

ответил(а) 2012-08-17T16:12:00+04:00 8 лет, 1 месяц назад
41

После столкновения с этой проблемой, я думаю, что ответ @DenysSéguret - это именно то, что вам нужно.


Когда он поддерживается браузером, вы можете использовать


window.history.pushState(stateObj, title, url);

или


window.history.replaceState(stateObj, title, url);

Как указано @DenysSéguret, вы можете найти документацию на сайте
https://developer.mozilla.org/en-US/docs/Web/API/History_API

ответил(а) 2016-01-05T13:37:00+03:00 4 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема