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


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

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

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

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

4 73

4 ответа:

простое присваивание window.location или window.location.href должно быть прекрасно:

window.location = newUrl;

однако ваш новый URL-адрес заставит браузер загрузить новую страницу, но похоже, что вы хотите изменить URL-адрес, не покидая текущую страницу. У вас есть два варианта для этого:

  1. используйте хэш URL. Например, вы можете перейти от example.com до example.com#foo без загрузки новой страницы. Вы можете просто установить window.location.hash сделать это легко. Затем, вы должны слушать HTML5 hashchange событие, которое будет запущено, когда пользователь нажимает кнопку "Назад". Это не поддерживается в старых версиях IE, но проверить jQuery BBQ, который делает эту работу во всех браузерах.

  2. вы можете использовать историю 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 beta.

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

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

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

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

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

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