С помощью HTML5 History API я создал что-то вроде следующего:
(function (d, w) {
$(function () {
$("#indicator").hide();
if (typeof history.pushState !== 'undefined') {
$("#citylinks a").click(function (e) {
history.pushState({ path: this.href }, '', this.href);
act(this.href);
e.preventDefault();
});
w.onpopstate = function (event) {
act(d.location);
};
}
function act(location) {
$("#results").hide();
$("#indicator").show();
$.getJSON(location, function (data) {
$("#results").html(data.result);
$("#results").fadeIn();
$("#indicator").hide();
});
}
});
})(document, window);
Полный код здесь:
https://github.com/tugberkugurlu/MvcMiracleWorker/commit/7c511f20678bbfe15462909c794eb323ce615372#diff-3
Проблема, с которой я столкнулся здесьчто я не хочу запускать событие w.onpopstate
при первой загрузке страницы с сервера.
Причина, по которой я хотел бы сделать это, заключается в том, что я хотел бы заполнить страницу на стороне сервера иЯ не хочу, чтобы клиентский код делал это.Если я удалю событие w.onpopstate
, я не смогу перехватить события history.go()
.
Есть ли способ решить эту проблему?