Как работать с куками. cookies.
[1 ] LuCiFеr [28.05.2011, 08:02]
Code
var expDays = 1; function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function DeleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } var exp = new Date(); exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); function amt(){ var kulda = GetCookie('kulda') if(kulda == null) { SetCookie('kulda','1') return 1 } else { var newkulda = parseInt(kulda) + 1; DeleteCookie('kulda') SetCookie('kulda',newkulda,exp) return kulda } } function getCookieVal(offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function checkkulda() { var kulda = GetCookie('kulda'); if (kulda == null) { kulda=1; SetCookie('kulda', kulda, exp); document.getElementById('magicnew').style.display = 'block'; document.getElementById('magicwas').style.display = 'none'; } else { kulda++; SetCookie('kulda', kulda, exp); } }
Code
<a href="javascript://" onclick="checkkulda();">тык</a> <div id="magicwas">111111</div> <div id="magicnew" style="display:none;">22222</div>
Сообщение отредактировал LuCiFеr - Суббота, 28.05.2011, 08:04
[2 ] likbezz [28.05.2011, 08:50]
На документ реди ... Code
<script type="text/javascript" src="http://likbezz.ru/_theme/_script/_ext/_cookie.js"></script> <script type="text/javascript"> (function(){$(function(){ var cookie=getCookie('kulda'); if (cookie&&cookie.indexOf('isShow')>-1){ document.getElementById('magicnew').style.display='block'; }else{document.getElementById('magicwas').style.display='block';setCookie('kulda','isShow',1);} alert(cookie); });})(); </script>
Code
<div style="display:none;" id="magicnew">11111</div> <div style="display:none;" id="magicwas">22222</div> <noscript>Включи подержку JS и Cookie</noscript>
☑ Пример (кука устанавливается на 1 минуту, примерно) ...
[3 ] likbezz [28.05.2011, 09:02]
Вот ещё вариант .... С проверкой, включены ли куки ... Code
<script type="text/javascript" src="http://likbezz.ru/_theme/_script/_ext/_cookie.js"></script> <script type="text/javascript"> function checkkulda(){ if(navigator.cookieEnabled){ var cookie=getCookie('kulda'); if(cookie&&cookie.indexOf('isShow')>-1){document.getElementById('magicnew').style.display='block'; }else{document.getElementById('magicwas').style.display='block';setCookie('kulda','isShow',0.0006);} }else{alert('Включи подержку Cookie');} }; </script>
Code
<div style="display:none;" id="magicnew">11111</div> <div style="display:none;" id="magicwas">22222</div> <script type="text/javascript">checkkulda();</script> <noscript>Включи подержку JS и Cookie</noscript>
☑ Пример v2 (кука устанавливается на 1 минуту, примерно) ... Код тестовой страницы :
Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Cookie Пример использования</title> <link rel="stylesheet" type="text/css" href="/_theme/_st/_ext/example.css" media="screen" /> <script type="text/javascript" src="/_theme/_script/_ext/_cookie.js"></script> <script type="text/javascript"> function checkkulda(){ if(navigator.cookieEnabled){ var cookie=getCookie('kulda'); if(cookie&&cookie.indexOf('isShow')>-1){document.getElementById('magicnew').style.display='block'; }else{document.getElementById('magicwas').style.display='block';setCookie('kulda','isShow',0.0006);} }else{alert('Включи подержку Cookie');} }; </script> </head> <body> <div id="exContent" style="text-align:left;padding-top:50px;"> <div style="display:none;" id="magicnew">22222</div> <div style="display:none;" id="magicwas">11111</div> <script type="text/javascript">checkkulda();</script> <noscript>Включи подержку JS и Cookie</noscript> </div> </body> </html>
...
[4 ] Tonich [21.12.2012, 11:51]
Уважаемый likbezz, скажите как сделать проверку куки на наличие Допустим кука устанавливается другим скриптом...Имя куки "qwerty" Если кука есть, то ссылке с id="qwerty_link" ставим href="qwerty_page", а если ссылки нет, то ставим href="#"
[5 ] Tonich [21.12.2012, 11:57]
Проверка осуществляется по имени куки, что-то я с утра сижу и ничего не получается
[6 ] likbezz [21.12.2012, 11:58]
Tonich , Уважаемый likbezz, скажите как сделать проверку куки на наличие Допустим кука устанавливается другим скриптом...Имя куки "qwerty"
Так, примерно: Code
<script type="text/javascript" src="http://likbezz.ru/_theme/_script/_ext/_cookie.js"></script> <script type="text/javascript"> if(getCookie('qwerty')){ alert('Кука есть!'); document.getElementById('qwerty_link').href='qwerty_page'; } </script>
[7 ] Tonich [21.12.2012, 13:03]
likbezz , Спасибо большоеДобавлено (21.12.2012, 13:00) ---------------------------------------------likbezz , А если нужно добавить ещё и проверку узла?
Добавлено (21.12.2012, 13:03) --------------------------------------------- Или проверку значения куки !=undefined
[8 ] likbezz [21.12.2012, 13:19]
Tonich , likbezz, А если нужно добавить ещё и проверку узла?
Какого узла? Или проверку значения куки !=undefined
? а зачем? Если её нет то условие не выполнится.
[9 ] Tonich [21.12.2012, 14:07]
likbezz , дело в том, что куку на моём сайте записывает яндекс, если пользователь залогинился на почте, так вот при выходе с почты кука остаётся, а значение её становится undefinedДобавлено (21.12.2012, 13:24) --------------------------------------------- а мне надо чтобы если куки нет или её значение = undefined , при нажатии на ссылку всплывала форма авторизации, иначе же просто ссылка на почту
Добавлено (21.12.2012, 14:07) --------------------------------------------- я был не прав, там всё по другому, куку яндекс пишет себе, соответственно придётся придумывать что-то неординарное... Объясню зачем загоняюсь... У яндекса есть сервис "почта для домена", который я успешно подключил... Также у них взял форму авторизации прямо со страницы сайта, а вот теперь сижу и туплю как сделать так, чтобы при нажатии на ссылку, в случае если пользователь не авторизован вылазила эта форма, а в случае если авторизован , то осуществлялся прямой переход на mail.mydomain.ru... Так, что спасибо Likbezz, а я наверное буду копать яндекс api, чтобы при авторизации сервер яндекса мог ответить моему, но это уже совсем другая история
[10 ] likbezz [21.12.2012, 14:40]
Tonich , а вот теперь сижу и туплю как сделать так, чтобы при нажатии на ссылку, в случае если пользователь не авторизован вылазила эта форма, а в случае если авторизован , то осуществлялся прямой переход на mail.mydomain.ru...
? Что-то ты, по моему, перемудрил ... Если юзер НЕ авторизован на почте, его по ссылке mail.mydomain.ru так и так перекинет на странице авторизации, а если авторизован - то сразу на почту.. Нет?
[11 ] Tonich [21.12.2012, 15:03]
Так то оно так, просто хотел форму авторизации в меню сайта вставить, но если юзер уже авторизовался зачем ему эту форму показывать...
[12 ] likbezz [21.12.2012, 15:07]
Tonich , Так то оно так, просто хотел форму авторизации в меню сайта вставить, но если юзер уже авторизовался зачем ему эту форму показывать...
- тогда через апи смотреть нужно. Вполне вероятно там есть возможность узнать статус авторизации.