Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2016, 01:18
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

работа document.cookie
Здравствуйте!

Есть код

$(function() {
$left = $(".leftname2"), $contex = $(".contextlink0");
$left.on("click", function() {
$left.not($(this).addClass("active")).removeClass("active");
var i = $left.index(this);
$contex.not($contex.eq(i).show()).hide();
if(id == "page1"){document.cookie="m_sf1=1; path=/;";}
if(id == "page2"){document.cookie="m_sf1=2; path=/;";}
if(id == "page3"){document.cookie="m_sf1=3; path=/;";}
})
});


<div class="leftname2 active" onclick="show('page1');return false;">Новые</div><div class="leftname2" onclick="show('page2');return false;">Обсуждаемые</div><div class="leftname2" onclick="show('page3'); return false;">Интересные</div>
</div>
<div class='menuleft'>
<div id="page1" class="contextlink0">
<div class="com_line"><a href="/forum_topic_view.php?gr=27">Анекдоты</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=5'>potapows</a><span class="font10"><span class='forum-posts4' title='Просмотров'>7 Августа 2016 в 20:51</span></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=3">Новый буксик</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=3'>Добрый</a><span class="font10"><span class='forum-posts4' title='Просмотров'>26 Июля 2016 в 20:32</span></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=2">Правила проекта</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=1'>Winko.Ru</a><span class="font10"><span class='forum-posts4' title='Просмотров'>25 Июля 2016 в 19:03</span></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=1">Мы открылись!</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=1'>Winko.Ru</a><span class="font10"><span class='forum-posts4' title='Просмотров'>25 Июля 2016 в 19:01</span></span></div></div>
</div>

<div id="page2" class="contextlink0">
<div class="com_line"><a href="/forum_topic_view.php?gr=2">Правила проекта</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=1'>Winko.Ru</a><span class="font10"><span class='forum-posts3' title='Комментариев'>27</span><a href="/forum_topic_view.php?gr=2"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=3">Новый буксик</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=3'>Добрый</a><span class="font10"><span class='forum-posts3' title='Комментариев'>25</span><a href="/forum_topic_view.php?gr=3"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=27">Анекдоты</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=5'>potapows</a><span class="font10"><span class='forum-posts3' title='Комментариев'>23</span><a href="/forum_topic_view.php?gr=27"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=1">Мы открылись!</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=1'>Winko.Ru</a><span class="font10"><span class='forum-posts3' title='Комментариев'>1</span><a href="/forum_topic_view.php?gr=1"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
</div>
<div id="page3" class="contextlink0">
<div class="com_line"><a href="/forum_topic_view.php?gr=3">Новый буксик</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=3'>Добрый</a><span class="font10"><span class='forum-posts2' title='Просмотров'>879</span><a href="/forum_topic_view.php?gr=3"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=2">Правила проекта</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=1'>Winko.Ru</a><span class="font10"><span class='forum-posts2' title='Просмотров'>493</span><a href="/forum_topic_view.php?gr=2"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=1">Мы открылись!</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=1'>Winko.Ru</a><span class="font10"><span class='forum-posts2' title='Просмотров'>298</span><a href="/forum_topic_view.php?gr=1"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
<div class="com_line"><a href="/forum_topic_view.php?gr=27">Анекдоты</a></div>
<div class="com_details"><div class='font12'><a href='/userinfo.php?str=5'>potapows</a><span class="font10"><span class='forum-posts2' title='Просмотров'>201</span><a href="/forum_topic_view.php?gr=27"><span class='comment-answer'>&nbsp;</span>Ответить</a></span></div></div>
</div>


он открываем вкладки, хочу сделать чтоб запомнил какую вкладку, открыл но не сохраняет

на php вывожу вот так
<? echo $_COOKIE['m_sf1'];?>
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2016, 05:41
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сначала вместо этой лапши

if(id == "page1"){document.cookie="m_sf1=1; path=/;";}
if(id == "page2"){document.cookie="m_sf1=2; path=/;";}
if(id == "page3"){document.cookie="m_sf1=3; path=/;";}


напиши одну строку

document.cookie='m_sf1='+id+'; path=/;';


Как записывается кука на жабе я не знаю, считаем что ты правильно записываешь, то есть в куке m_sf1 будет page1, или page2 и так далее, что полезнее, поскольку page1, page2, и так далее - это готовые id, как и следует из кода записи. В куку можно записать 4096 байт, так что на page1 хватит.

Поскольку вкладки управляются жабой, то нет нужды ковырять эту куку на сервере, просто прочитай ее, получи id в переменную и запусти тот же самый код управления вкладками.

Цитата:
на php вывожу вот так
<? echo $_COOKIE['m_sf1'];?>
Ну получишь где-то в коде циферку и все.
Ответить с цитированием
  #3 (permalink)  
Старый 12.08.2016, 05:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от warren buffet
Ну получишь где-то в коде циферку и все.
Он ее никогда не получит на сервере, ибо кука с неуказанным параметром expires является сессионной и удаляется при закрытии страницы.
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2016, 05:57
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Посмотрел твой "есть код", которого там не должно быть вообще. У тебя где-то есть функция show(id){}; судя по onclick="show('page1');return false;" Так ты ее и наполни фаршем.

function show(id){

   var ckey='m_sf1';

   /*
    если id не определено, 
    то делается попытка получить его из кук 
    если и там нет, то по умолчанию page1
    и новое (или старое) id сразу же сохраняется
    */

   if(!id) id = Cookie.load(ckey) || 'page1';
   Cookie.save(ckey,id);

    /* тут вся твоя лапша */

   return false;

}



и тогда

onclick="return show('page1');"

И где-нибудь на загрузке страницы пишешь

show();

без аргументов.

ЗЫ Cookie.load и Cookie.save - это абстракция. Заменяй на свои коды записи чтения куки.
Ответить с цитированием
  #5 (permalink)  
Старый 12.08.2016, 06:02
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от laimas
Он ее никогда не получит на сервере
У него же jquery, неужели в этой лайбе не предусмотрены гуманные методы чтения-записи кук?
Ответить с цитированием
  #6 (permalink)  
Старый 12.08.2016, 06:08
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Не предусмотрено блин, офигеть, еще и плугин нужен, оборзели. Короче, вот так должно работать

var Cookie={
	save: function(key, value) {
		document.cookie = key + '=' + value + '; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/';
	},
	load: function (key) {
		var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
		return keyValue ? keyValue[2] : null;
	}
	
};


Хотя вроде бы все имена и значения должны быть в кавычках. Хз.

Последний раз редактировалось warren buffet, 12.08.2016 в 06:19.
Ответить с цитированием
  #7 (permalink)  
Старый 12.08.2016, 11:10
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

я не сильно разбираюсь, можно готовый код?
Ответить с цитированием
  #8 (permalink)  
Старый 12.08.2016, 15:38
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

ктонибудь поможет?
Ответить с цитированием
  #9 (permalink)  
Старый 13.08.2016, 00:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от porezon
ктонибудь поможет?
Кука, это не так и сложно, хотя надо предупредить, что бывает "непонятное поведение их" в зависимости от браузера и имени домена.

Сначала прочесть о параметрах кук. Если так затруднительно их устанавливать/проверять посредством document.cookie можете использовать плагин для jQuery.

А ваш JS-сценарий должен выполнять следующее - при загрузке страницы проверять установлена ли кука с нужным именем, и если да, то открыть вкладку в ней указанную, иначе вкладка по умолчанию.

Это может делать и сервер, считывая куку, но лучше отдать это на откуп клиенту.

Щелчки по вкладкам, это запись куки.

Попробуйте, не получится, помогут. Только не надо для примера выкладывать длиииный html, хватит и трех DIV с одним словом.

Последний раз редактировалось laimas, 13.08.2016 в 13:54.
Ответить с цитированием
  #10 (permalink)  
Старый 13.08.2016, 06:17
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от laimas
бывает "непонятное поведение их" в зависимости от браузера и имени домена.
И какова эта зависимость? Например если домен javascript.ru, а браузер Mozilla Firefox, то какого поведения строки текста следует ожидать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вакансия: Программист IOS, работа в офисе,г.Ростов-на-Дону Анна NikitaOnline Работа 0 21.03.2016 18:45
Front-end разработчик, работа удаленная или в офисе(Нижний Новгород), фуллтайм. VadimZharko Работа 8 29.04.2013 09:03
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06