Попробуй с вот таким файлецом:
// тут подгружается шаблон сайта
ajax('template.html', function(answer) {
document.body.innerHTML = answer;
if (location.pathname != '/') {
// этот код сработает, если url не ведёт на главную страницу
load(location.pathname);
}
});
// для навигации по истории
window.onpopstate = function() {
load(location.pathname);
};
// обработчик ссылок
window.onclick = function (e) {
var target = e.target;
var path = obj.getAttribute('data-href');
if (path) {
e.preventDefault();
load(path);
history.pushState(null, null, path);
}
};
// обрабатываем path в рабочую ссылку и делаем запрос на сервер
function load(path) {
var index = path.split('/').reverse()[0];
var fullPath = '/page' + path + '/' + index + '.html';
ajax(fullPath, function(answer) {
document.getElementById('content').innerHTML = answer;
});
}
function ajax(url, func) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('post', url, true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
// тут обработаются ошибки при ajax запросах
switch (xmlhttp.status) {
case 200:
func(xmlhttp.responseText);
break;
case 401:
alert('401');
break;
case 403:
case 404:
alert('404');
break;
case 500:
alert('500');
break;
}
}
}
xmlhttp.send();
}