Быстрые переходы наблюдаются ВКонтакте. Это очень удобно.
При переходе обновляется не вся страница, а её часть.
У меня есть способ, но у него 2 минуса.
Первый: При нажатии на среднюю кнопку мыши на ссылке, в новой вкладке открывается не содержимое ссылки, а главная страница сайта.
Второй: На кнопку "Назад" в Браузере сайт не реагирует. Лишь возвращает предыдущие ссылки в строке адреса.
Я не знаю как от этого избавиться.
Вот мой метод. Может поможете исправите.
Создаём функцию:
<script type="text/javascript">
function go(page){$.post(page, {mode: 'go'}, function(msg){$("#body").html(msg);});}
</script>
$.post('Адрес, куда отправляем', {Данные $_POST}, function(msg){$("#какой блок меняем(ид блока)").html(msg);})
Зачем я отправляю {mode: 'go'} на php это звучит так: $_POST['mode']='go';
Просто у меня в php файлах такой код:
if ($_POST['mode']<>'go')
include($path.'incl/foot_tpl.php'); // инклудим с шапкой
else
include($path.'incl/foot.php'); // инклудим без шапки
Иначе зачем нам две шапки, если одна уже имеется?)
А ссылки выглядят так:
<a href="#любой текст, он не повлияет ни на что(обязательно решётку(#) в начале)" onclick="go('ссылка на файл')">Название ссылки</a>
Например:
<a href="#/index" onclick="go('index.php')">Главная</a>
Вот полный пример:
<html>
<head>
<title>Привет</title>
<link rel="stylesheet" href="style/style.css" type="text/css">
<script type="text/javascript" src="/js/jQuery.js"></script>
<script type="text/javascript">
function go(page){$.post(page, {mode: 'go'}, function(msg){$("#body").html(msg);});}
</script>
</head>
<body>
<div class="begin_block">Меню сайта</div>
<div class="block"><a href="/#index" onclick="go('index.php')">Главная</a></div>
<div class="block"><a href="/#download" onclick="go('zagruzki.php')">Загрузки</a></div>
<div id="body">
Текст
</div>
</body>
</html>
Sich, это просто библия jQueqy
добавлено спустя 5 минут:
iceman12, я искал Pjax на примере там работает. Я только у себя не мог это всё сделать. Поэтому подумал, что не вариант. Но после твоей подсказки я подумаю над этим. Может быть и сделаю.
могу поделится для jquery, гдето я видел такое дело и оптимизировал для себя...
добавлено спустя 13 минут:
var page = []; //// объявляем масси переменных куда будем записывать страницы на котрых были
var currentAnchor = ''; //// переменная равна пустоте как и изначально location.hash
$(document).ready(function () {
page['title'] = document.title; //// записываем текущий заголовок страницы
page['#' + location.pathname] = document.getElementById('page').innerHTML; //// записываем текущую страницу
setInterval("checkAnchor()", 500); //// запускаем функцию, которая обновляется каждые 500мс
});
function checkAnchor() {
if (currentAnchor != location.hash) { //// если хэш не равен переменной currentAnchor
currentAnchor = location.hash; //// эта переменная равна хэшу
if (!currentAnchor) { //// если эта переменная пустая вставляем страницу с которой начали
document.title = page['title'];
$("#page").html(page['#' + location.pathname]);
}
else //// иначе объявляем переменную, которая равна хэше без # (str_replace моя самописная функция можете обрезать сами как угодно)))
{
var lll = str_replace('#', '', window.location.hash);
}
if (!page[location.hash]) { //// если нет в массиве этой страницы, грузим..
gruz_on();
$('#fixed').hide();
$.ajax({
url: "/ajax_pages/" + lll,
error: function (request, error) {
window.location.reload();
},
success: function (a) {
$("#page").html(a);
page[location.hash] = a;
}
});
} else { //// ну а если есть, то вставляем эту страницу
$("#page").html(page[location.hash]);
}
}
return page;
}
добавлено спустя 1 минуту:
функция для того чтобы принудительно загружать страницы даже те которые есть в массиве переменной page
function go(a) {
if (!page['#' + a]) {
currentAnchor = false;
location.hash = a;
} else {
page['#' + a] = false;
location.hash = a;
}
}
добавлено спустя 1 минуту:
ну а ссылки <a href="index.php" onclick="go('index.php'); return false">Главная</a>
ну а страница загружается в диве с идентификатором page, можно пойти еще круче и использовать json вместо html, тогда скорость еще быстрее, но нагрузка на браузер сильная