You my solve the problem in two approach:
Approach 1:
Modify part of your code as
$(function() {
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
updatePage(State.data, State.url);
});
});
Instead of
$(function() {
if ($('body').find('.ajax-content-column').length != 0) {
// current page has certain class.
if (History.enabled) {
State = History.getState();
// from pushState below, when you are on ajax requested page and reload page, it must double back click to go back.
History.pushState({ajaxContentColumn:$('.ajax-content-column').html()}, $('title').text(), State.url);
}
// on state change, call update page js function.
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
updatePage(State.data, State.url);
});
}
});
Update : update your ajaxPushUrl function to update only if we are not on same page.
function ajaxPushUrl(thisobj) {
if ($('body').find('.ajax-content-column').length != 0) {
// current page has certain class.
var thisurl = thisobj.attr('href');
if(window.location.href.split('/').pop() != thisurl) { //update only we are not on same page
History.pushState({ajaxContentColumn:$('.ajax-content-column').html()}, thisobj.text(), thisurl);
}
return false;
}
}
In this approach, an ajax request get called when you click an ajax link or go through history.
Approach 2:
$(function() {
var clicked = false;
function updatePage(data, url) {
if ($('body').find('.ajax-content-column').length == 0) {
// has NO certain class, use normal page request.
window.location.href=url;
}
if(typeof data.ajaxContentColumn != 'undefined') {
$('.ajax-content-column').html(data.ajaxContentColumn);
return false;
}
fetchContent(url);
}
function fetchContent(url) {
$.ajax({
url: url,
type: 'GET',
dataType: 'html',
success: function (data) {
$('.ajax-content-column').html(data);
clicked = true;
History.pushState({ajaxContentColumn: $('.ajax-content-column').html()}, '', url);
}
});
}
$(".ajax-link").click(function(e) {
if($('body').find('.ajax-content-column').length == 0) {
return true;
}
e.preventDefault();
var url = $(this).attr('href');
fetchContent(url);
});
History.Adapter.bind(window,'statechange',function(){
if(clicked) {
clicked = false;
return;
}
var State = History.getState();
updatePage(State.data, State.url);
});
});
and remove onclick=\"return ajaxPushUrl($(this));\"
from your links.
In this approach, you can save some ajax request when go through history. content loaded from browser cache.
Enjoy!!