Ответ 1
document.location.href = newUrl;
https://developer.mozilla.org/en-US/docs/Web/API/document.location
У меня есть следующий код, который изменяет страницы из JavaScript:
var newUrl = [some code to build up URL string];
window.location.replace(newUrl);
Но он не изменяет верхний URL-адрес, поэтому, когда кто-то нажимает кнопку "Назад", он не возвращается на предыдущую страницу.
Как я могу изменить JavaScript и верхний URL-адрес, так что кнопка возврата браузера работает.
document.location.href = newUrl;
https://developer.mozilla.org/en-US/docs/Web/API/document.location
Простое назначение window.location
или window.location.href
должно быть прекрасным:
window.location = newUrl;
Однако ваш новый URL-адрес заставит браузер загружать новую страницу, но похоже, что вы хотите изменить URL-адрес, не выходя из текущей страницы. У вас есть два варианта:
Используйте хеш URL. Например, вы можете перейти от example.com
в example.com#foo
без загрузки новой страницы. Вы можете просто установить window.location.hash
, чтобы сделать это легко. Затем вы должны прослушать событие HTML5 hashchange
, которое будет запущено, когда пользователь нажмет кнопку "Назад". Это не поддерживается в более старых версиях IE, но проверьте jQuery BBQ, что делает эту работу во всех браузерах.
Вы можете использовать историю HTML5 для изменения пути без перезагрузки страницы. Это позволит вам перейти от example.com/foo
в example.com/bar
. Это легко:
window.history.pushState("example.com/foo");
Когда пользователь нажимает "назад", вы получите окно popstate
событие, которое вы можете легко прослушать (jQuery):
$(window).bind("popstate", function(e) { alert("location changed"); });
К сожалению, это поддерживается только в очень современных браузерах, таких как Chrome, Safari и бета-версия Firefox 4.
Хмм, я бы использовал
window.location = 'http://localhost/index.html#?options=go_here';
Я не совсем уверен, что это то, что вы имеете в виду.
Если вы просто хотите обновить относительный путь, вы также можете сделать
window.location.pathname = '/relative-link'
"http://domain.com" -> "http://domain.com/relative-link"