Как изменить страницу из JavaScript

У меня есть следующий код, который изменяет страницы из JavaScript:

var newUrl = [some code to build up URL string];
window.location.replace(newUrl);

Но он не изменяет верхний URL-адрес, поэтому, когда кто-то нажимает кнопку "Назад", он не возвращается на предыдущую страницу.

Как я могу изменить JavaScript и верхний URL-адрес, так что кнопка возврата браузера работает.

Ответ 2

Простое назначение 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.

Ответ 3

Хмм, я бы использовал

window.location = 'http://localhost/index.html#?options=go_here';

Я не совсем уверен, что это то, что вы имеете в виду.

Ответ 4

Если вы просто хотите обновить относительный путь, вы также можете сделать

window.location.pathname = '/relative-link'

"http://domain.com" -> "http://domain.com/relative-link"