Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2013, 04:06
Аспирант
Отправить личное сообщение для ozzon91 Посмотреть профиль Найти все сообщения от ozzon91
 
Регистрация: 09.05.2012
Сообщений: 47

Работа с историей в браузире.
Доброе время суток всем.

Есть такой код:
Демо - http://alpaca.org.ua/graph/address/
<!DOCTYPE HTML>
<html>
<head>
	<meta charset="utf-8">
    <title>Push</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

<style>
#wrapper {
	position: relative;
	margin: 0 auto;
	border: 1px #c2c2c2 solid;
	width: 920px;
	height: 520px;
	overflow: hidden;
}

#slider {
	background: #EDEDED;
	width: 900px;
	height: 520px;
	position: absolute;
	padding: 10px;
}

.go {
	background-color: violet;
	border-radius: 50%;
	display: block;
	width: 50px;
	height: 50px;
	position: absolute;
	top: -23px;
	overflow: hidden;
	text-indent: -999px;
}

#test1 {
}

#test2 {
	left: 70px;
}

#test3 {
	left: 140px;
}

#nav {
	background-color: blue;
	position: relative;
	margin: 30px auto;
	width: 180px;
	height: 3px;
}
</style>

<script>

$(document).ready(function(){

$('.go').bind('click', function() {

	var ur = $(this).attr('href');

	$.ajax({ 
  		url: ur,
  		success: function(data) {
  					$('#slider').text(data);
  					history.pushState(null, null, ur);
  					slid();
  				}
  		});

	$('.go').each(function() {
		$(this).css('background', 'violet');
	});

	$(this).css('background', 'blue');

});


function slid() {
	$('#slider').css({right: '-900px'});
	$('#slider').animate({right: "0"}, 300);
}

});

</script>

</head>

<body>
<div id='nav'>
	<a href="test.php" class='go' id='test1' onclick='return false;'>test1</a>
	<a href="test2.php" class='go' id='test2' onclick='return false;'>test2</a>
	<a href="test3.php" class='go' id='test3' onclick='return false;'>test3</a>
</div>
<div id='wrapper'>
	<div id='slider'>Главная страница</div>
</div>

</body>
</html>


Нужно что бы при смене адреса в строке и обновлении страницы не перекидывала на test3.php и пр. Знаю, что нужно как-то ловить событие popstate, но не могу разобраться до конца, помогите.
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2013, 04:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Во-первых, при прямом запросе файла - должен отдаваться контент вместе с шаблоном. Это на случай F5 или перехода по прямой ссылке. Тут поможет анализ заголовка X-Requested-With, который в случае xhr будет равен "XMLHttpRequest"
Во-вторых нужно слушать событие window@popstate возникающее при навигации по истории
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2013, 04:26
Аспирант
Отправить личное сообщение для ozzon91 Посмотреть профиль Найти все сообщения от ozzon91
 
Регистрация: 09.05.2012
Сообщений: 47

То есть нужно на сервере анализировать заголовок X-Requested-With?
Часто вижу такой код
window.onload=function(){ 
window.setTimeout( 
function()  
{ 
window.addEventListener( 
"popstate",  
function(e) { 
//ajax загрузка нужной части сайта. 
e.preventDefault(); 
},  
false 
); 
}, 
 1); 
}

Не могу понять, что он делает?
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2013, 21:28
Аспирант
Отправить личное сообщение для ozzon91 Посмотреть профиль Найти все сообщения от ozzon91
 
Регистрация: 09.05.2012
Сообщений: 47

Как задействовать кнопки вперед назад?
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2013, 21:46
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от ozzon91
Как задействовать кнопки вперед назад?
Сообщение от danik.js
слушать событие window@popstate возникающее при навигации по истории
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript фронтенд разработчик(долгосрочная, удаленная работа) cpp Работа 11 16.09.2012 12:04
Разоваяя работа - сверстать не сложную страницу. divine108 Работа 1 06.03.2012 00:51
Ajax. Работа с историей. Отследить нажатие "назад/вперед" Dorian_bs Общие вопросы Javascript 3 15.12.2011 03:19
Программист JavaScript постоянная удалённая работа. moisha Работа 4 26.10.2011 19:52
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06