Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   cookies + redirect + animation (https://javascript.ru/forum/jquery/41592-cookies-redirect-animation.html)

space_pancake 20.09.2013 18:06

cookies + redirect + animation
 
Доброе всем время суток.

У меня такая задача, есть главная страница и несколько внутренних. Если пользователь заходит на сайт из вне (на главную страничку) то никакой анимации быть не должно, но если с внутренней страницы он переходит на главную, то должна включатся некая анимация.

Как я понял, это нужно сделать через кукис, т.е если пользователь переходит с такой то определённой внутренней страницы, то анимация включается, а если с какой сторонней, то анимации нет.

К несчастью с кукис никогда не работал, по этому пожалуйста прошу помочь найти простое решение.

mi.rafaylik 20.09.2013 19:10

Редирект здесь ни при чём. Вот один из возможных вариантов решения:
В head страниц подключаем библиотеку jquery, плагин jquery.cookie и наш файл с действиями
<head>

	<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
	<script type="text/javascript" src="jquery.cookie.js"></script>
	<script type="text/javascript" src="actions.js"></script>

</head>

Файл actions.js
$(document).ready(function(){

	// устанавливаем пустые cookie, если они отсутствуют (для первого посещения в данной сессии)
	if (!$.cookie('animate')){
		$.cookie('animate', '', { path: '/' });
	};
	// получаем значение адресной строки и парсим его по слэшу на части (то есть создаём массив)
	var currentUrl = location.href.replace('http://', '').split('/');
	// если мы на главной странице (currentUrl имеет одну часть: site.com, то есть index страница)
	if (currentUrl.length == 1){
		// при этом если cookie не пустые
		if ($.cookie('animate') == 1){
			// запускаем анимацию
			// $('#animatedElement').animate();
		}
		// устанавливаем пустые cookie
		$.cookie('animate', '', { path: '/' });
	// если мы не на главной странице (currentUrl имеет более одной части: site.com/page или site.com/pages/1)
	} else {
		// устанавливаем cookie со значением 1
		$.cookie('animate', 1, { path: '/' });
	}

});

Так как срок жизни cookie не указан, то они создаются сессионно, и при закрытии браузера удаляются.

space_pancake 26.09.2013 16:24

Большое спасибо, за столь раскрытый и наглядный пример!

Я так понимаю, что если анимацию, мне надо будет заменить какой нибудь функцией, то 14 строку я просто могу заменить названием этой функции?

mi.rafaylik 26.09.2013 18:36

Абсолютно верно.
jQuery это удобный инструмент для работы с JavaScript, поэтому рекомендую сначала изучить учебник JavaScript, а потом разбираться в jQuery. Тогда многие вопросы сами исчезнут.

space_pancake 28.09.2013 00:34

Цитата:

Сообщение от mi.rafaylik (Сообщение 273805)
Абсолютно верно.
jQuery это удобный инструмент для работы с JavaScript, поэтому рекомендую сначала изучить учебник JavaScript, а потом разбираться в jQuery. Тогда многие вопросы сами исчезнут.

Благодарю!


Часовой пояс GMT +3, время: 04:11.