Изменить URL-адрес в адресной строке браузера без перезагрузки существующей страницы
Возможный дубликат:
Изменить URL-адрес без перезагрузки страницы
Я ищу способ сделать мои внутренние ссылки функциональными, используя мои текущие анимации javascript, не вызывая перезагрузки страницы, когда вы нажимаете на них - , но я хотел бы, чтобы URL-адрес обновлялся в браузере.
Многие сайты делают это, вот хороший пример: http://grooveshark.com/#!/search?q=adf
Как получить URL-адрес для обновления без перезагрузки страницы?
Подробнее:
В настоящее время ссылка на моей странице выглядит как <a href="#aboutus">About Us</a>
, это приведет вас к <div id="aboutus"></div>
через javascript.
javascript выглядит примерно так:
$("#navigation a").click(function(e){
animate(..scroll to section..);
e.preventDefault(); // <==========
});
Я считаю, что "e.preventDefault()" - это то, что заставляет URL-адрес не обновляться, но как я могу предотвратить перезагрузку страницы браузером при изменении URL-адреса?
Как это делают другие сайты? Что называется этим методом (так что я могу продолжить его изучение)?
спасибо.
Ответы
Ответ 1
Вот аналогичный вопрос.
Вот пример:
function processAjaxData(response, urlPath){
document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
window.history.pushState(
{
"html":response.html,
"pageTitle":response.pageTitle
},
"",
urlPath
);
}
Ответ 2
Мне кажется, что все это делается с AJAX. #!
в URL-адресе приводит к тому, что браузер интерпретирует оставшуюся часть URL-адреса в качестве якоря. Якоря не вызывают перезагрузки страниц (на самом деле сервер никогда не увидит, какой якорь находится в браузере в ходе обычный HTTP-запрос). Когда URL-адрес изменяется, Javascript берет верх, проверяет запрос и загружает все, что подходит с сервера, используя веб-службы.
Я не рассматривал это слишком подробно, но это то, что мне кажется.