Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Открытие div блока при первом визите на сайт (https://javascript.ru/forum/misc/6196-otkrytie-div-bloka-pri-pervom-vizite-na-sajjt.html)

Nushaba 17.11.2009 21:41

Открытие div блока при первом визите на сайт
 
Цитата:

Всем привет, назрел вопрос, необходимо сделать так, что бы при заходе на сайт выводилось окно div с текстом и двумя вариантами, либо отрицательно, либо положительно. Ну например вопрос: Вам есть 18 лет? Если нет, то кинет на другой сайт, если да, то div блок закроется и откроет закрытый собою контент сайта. И надо как то заставить этот скрипт не работать постоянно при каждом обновлении страницы, а хотя бы раз в сутки, пусть запоминает по IP или кукисам как то. Я даже не знаю как грамотно сформировать такой запрос в гугле, вот набрёл на ваш сайт случайно, сам в яве увы не прошарен, покапал форум ваш, что то похожее находил но не сильно подходит моим нуждам, там не было запоминания посетителя который ответил положительно, а было просто закрытие div блока...
Это скрипт для предупреждения посетителя о том, что на сайте находится сомнительная информация, для индивидуального просмотра, для просмотра сайта он должен подтвердить своё согласие на просмотр контента сайта.
var Cookie = new Object();
Cookie.set = function(name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    }
Cookie.get = function(name) {
  var prefix = name + "=";
  var cookieStartIndex = document.cookie.indexOf(prefix);
  if (cookieStartIndex == -1) return null;
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
  if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
  }
Cookie.del = function(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }
var myVar = null;// просто переменная со значением, для проверки кукисов
myVar = Cookie.get("имя_для_куков");
if (myVar != "1")// проверка на то есть куки или нету, если есть то не выполнять скрипт иначе задается вопрос
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 Cookie.set("имя_для_куков", "1");
 }
 else
 {location.href = "http://javascript.ru/";}
}


Отдельное спасибо PeaceCoder
Найдите текст "имя_для_куков" (в двух местах) и поменяйте название по желанию, так же в ковычках.

Скрипт ещё раз исправлен и не глючит теперь.

Nushaba 18.11.2009 20:28

Такой цивильный сайт и такая откровенная реклама... Ну так что народ, не кто не поможет скриптом?
Есть простой скрипт:
<script language="JavaScript">
<!-- Begin
var zayti=confirm("Вы точно хотите сюда войти? \nЕсли нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
if (zayti)
history.go(1);
else
location = "http://ссылка.ru/";
// End -->
</script>

Беда в том, что при КАЖДОМ обновлении страницы нужно подтверждать, представляете какой это маразм на ЦМСках? Помогите настроить какое-нибудь скармливание кукисов, при наличае которых этот скрипт не будет больше срабатывать...

B~Vladi 19.11.2009 18:08

Твой вопрос затрагивает не только клиента, но и серверную часть...
А вообще тебе в раздел "работа", ибо спецально никто писать не станет (хотя может и найдутся такие:))...

Nushaba 20.11.2009 09:18

Цитата:

Сообщение от B~Vladi (Сообщение 35718)
Твой вопрос затрагивает не только клиента, но и серверную часть...
А вообще тебе в раздел "работа", ибо спецально никто писать не станет (хотя может и найдутся такие:))...

Спасибо, пока до ЗП потерплю, может и сам чего то придумаю.

Nushaba 17.12.2009 13:36

Привет всем. Собрал скрипт для сайта, почему то работает ТОЛЬКО в ИЕ. Может кто подсказать что с ним сделать что бы в фф и опере работал, сафари, хроме...
<script language="JavaScript">
<!-- Begin
function getCookie(name) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
            }
            setStr = unescape(cookie.substring(offset, end));
        }
    }
    return(setStr);
}

function setCookie(name, value) {
var valueEscaped = escape(value);
var expiresDate = new Date();
expiresDate.setTime(expiresDate.getTime() + 60 * 60 * 1000); // срок - 1 год, но его можно изменить
var expires = expiresDate.toGMTString();
var newCookie = name + "=" + valueEscaped + "; path=/; expires=" + expires;
if (valueEscaped.length <= 4000) document.cookie = newCookie + ";";
}


var myVar = null;// просто переменная со значением, для проверки кукисов
myVar = getCookie("sitecookie");
if (myVar == "1")// проверка на то есть куки или нету, если есть то переход без вопроса иначе задается вопрос
{
history.go(1);
}
else
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 history.go(1);
 setCookie("sitecookie", "1");
 };
 else
 {location = "http://ya.ru/";}
}
// End -->
</script>

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

PeaceCoder 17.12.2009 14:33

В лом разбираться и вспоминать как работать с куками. вот те код вроде должно работать
// name - имя cookie
// value - значение cookie
// [expires] - дата окончания действия cookie (по умолчанию - до конца сессии)
// [path] - путь, для которого cookie действительно (по умолчанию - документ, в котором значение было установлено)
// [domain] - домен, для которого cookie действительно (по умолчанию - домен, в котором значение было установлено)
// [secure] - логическое значение, показывающее требуется ли защищенная передача значения cookie

var Cookie = new Object();
Cookie.set = function (name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    }
Cookie.get = function (name) {
  var prefix = name + "=";
  var cookieStartIndex = document.cookie.indexOf(prefix);
  if (cookieStartIndex == -1) return null;
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
  if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
  }
Cookie.del = function (name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }

Nushaba 17.12.2009 15:30

PeaceCoder, сделал как у тебя, получил:
<script language="JavaScript">
<!-- Begin
var Cookie = new Object();
Cookie.set = function (name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    }
Cookie.get = function (name) {
  var prefix = name + "=";
  var cookieStartIndex = document.cookie.indexOf(prefix);
  if (cookieStartIndex == -1) return null;
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
  if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
  }
Cookie.del = function (name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }


var myVar = null;// просто переменная со значением, для проверки кукисов
myVar = Cookie.get("sitecookie");
if (myVar == "1")// проверка на то есть куки или нету, если есть то переход без вопроса иначе задается вопрос
{
history.go(1);
}
else
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 history.go(1);
 Cookie.set("sitecookie", "1");
 };
 else
 {location = "http://ya.ru/";}
}
// End -->
</script>


Но по прежнему видит только осёл скрипт, разумеется скрипты включены, куки сброшены, даже в сафари делал полный сброс и бестолку. Есть ещё какие идеи народ?

Цитата:

Суть скрипта проверить наличие куков, если они есть, показать сайт, если их нету, задать вопрос, согласен ли посетитель просматривать сайт, если нет, открывает посетителю яндекс, если да, записывает ему куки, пустить на сайт.
Фишка в том, что даже при отсутствии куков не появляется вопроса, желает ли посетитель попасть на сайт или нет, так что всё это похоже на то, что куки не создаются для сайта вовсе. Или где символ упустил?

PeaceCoder 17.12.2009 20:03

во первых поменяй местами.
Cookie.set("sitecookie", "1");
  history.go(1);


Во вторых если и так задаваться не будет вопрос, значит исправишь
if (myVar)

больше не знаю в чем трабла. эти скрипты куков должны работать на всех браузерах. да и по алгоритму в любом случае должен быть запрос на переход если ошибка в куках.
еще исправь везде
function ( на function(
че там закрался пробел...
<script type='text/javascript'>

Nushaba 18.12.2009 09:47

var Cookie = new Object();
Cookie.set = function(name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    }
Cookie.get = function(name) {
  var prefix = name + "=";
  var cookieStartIndex = document.cookie.indexOf(prefix);
  if (cookieStartIndex == -1) return null;
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
  if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
  }
Cookie.del = function(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }


var myVar = null;// просто переменная со значением, для проверки кукисов
myVar = Cookie.get("sitecookie");
if (myVar)// проверка на то есть куки или нету, если есть то переход без вопроса иначе задается вопрос
{
history.go(1);
}
else
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 Cookie.set("sitecookie", "1");
  history.go(1);
 };
 else
 {location = "http://ya.ru/";}
}

Вот конечный результат, но всё так же не срабатывает нигде, кроме осла, вообще ппц...

PeaceCoder 18.12.2009 14:14

Как я и заподозрил на свежую голову увидел.

{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 Cookie.set("sitecookie", "1");
  history.go(1);
 }
 else
 {location.href = "http://ya.ru/";}
}

";" перед else нельзя. это не php + location.href

Nushaba 18.12.2009 15:18

PeaceCoder, спасибо тебе, как я запарился с этим скриптом, не знаю js в принципе! Помогли твои последние советы, всё работает. Человеческое спасибо что тратил время и разбирался в косяках моих! Теперь дети на порносайт не попадут )

P.S. Хочу что бы скрипт стал общедоступным для всех, аналога в интернете ему я не видел. Поэтому в теме я чуток пофлужу поисковыми фразами так сказать, что бы можно было найти его у вас, поменяйте название темы, что бы было более понятно что за скрипт тут, хотя это может и не обязательно.

Поисковые фразы:
Скрипт подтверждения, соглашения, согласия входа на сайт, скрипт для порносайта, ссора скрипт, подтверждение возраста, правил сайта, кукисы, куки, cookie.

P.P.S Офицально и впервые скрипт был создан именно на этом сайте 15.12.2009 Считается хорошим тоном оставлять копирайты.

Финальная версия скрипта, так же обновлена в первом посту:
var Cookie = new Object();
Cookie.set = function(name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    }
Cookie.get = function(name) {
  var prefix = name + "=";
  var cookieStartIndex = document.cookie.indexOf(prefix);
  if (cookieStartIndex == -1) return null;
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
  if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
  }
Cookie.del = function(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }
var myVar = null;// просто переменная со значением, для проверки кукисов
myVar = Cookie.get("имя_для_куков");
if (myVar != "1")// проверка на то есть куки или нету, если есть то не выполнять скрипт иначе задается вопрос
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 Cookie.set("имя_для_куков", "1");
 }
 else
 {location.href = "http://javascript.ru/";}
}

Найдите текст "имя_для_куков" (в двух местах) и поменяйте название по желанию, так же в ковычках.

Kolyaj 18.12.2009 17:07

Цитата:

Сообщение от Nushaba
Теперь дети на порносайт не попадут

угу угу )))

Цитата:

Сообщение от Nushaba
Хочу что бы скрипт стал общедоступным для всех, аналога в интернете ему я не видел.

Вы преувеличиваете важность и сложность этого скрипта :)

Nushaba 18.12.2009 17:15

Цитата:

Сообщение от Kolyaj (Сообщение 38392)
Вы преувеличиваете важность и сложность этого скрипта :)

Преувеличиваю, не спорю. Но готового скрипта такому чайнику как я найти не получилось, а теперь он есть, здесь те запросы, которые использовал я для поиска чего то похожего. Правда я пока хз как он повлияет на СЕО, но кажется не должен мешать, это не пхп.

А про то, что дети не попадут на порносайт конечно же шутка ) Но хотя бы для родителей предупреждение, что бы детей вон от экрана монитора ) Конечно неадекваты не оценят скрипт, ибо рекламу свою плавающую с жопой в экран перед ним не повесишь ) Но плевал я на неадекватов, я за чистый интернет! :)

Kolyaj 18.12.2009 17:35

Цитата:

Сообщение от Nushaba
Но готового скрипта такому чайнику как я найти не получилось, а теперь он есть, здесь те запросы, которые использовал я для поиска чего то похожего.

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

Если же базовые знания (не JS, а хотя бы программирования вообще) имеются, то написать такой скрипт несложно и без этой темы. Всего-то надо нагуглить функции установки кук и функцию confirm.

Nushaba 18.12.2009 23:20

Цитата:

Сообщение от Kolyaj (Сообщение 38396)
Двум людям редко бывают нужны абсолютно идентичные скрипты. Так что если такой же чайник, как вы, найдет эту тему, скорее всего она ему не поможет, т.к. вроде бы то, но не совсем, а чуть доделать в силу полного нуля в JS нет возможности.

Если же базовые знания (не JS, а хотя бы программирования вообще) имеются, то написать такой скрипт несложно и без этой темы. Всего-то надо нагуглить функции установки кук и функцию confirm.

Тебе об этом легко говорить, представь себе человека, который не учился этому языку программирования, для него нету понятия что должно быть вперёд другого, я не программист, но хтмл знаю очень хорошо, я могу сказать почему нельзя делать так а надо сделать вот так, я немного знаю пхп и могу собрать нужный мне код по образцам, но поверь мне, увидев два разных варианта написания одного и того же скрипта, не поняв в чём разница, не зная что какой то символ ";" нельзя ставить там, или после этого, то я нифига не соберу, результат ты видел, скрипт был собран, но были допущены ошибки, из-за которых скрипт не работал нигде кроме ie, какие мне могли придти в голову мысли по твоему? В хтмл всё иначе, что работает на осле, на остальных браузерах 100% работает, что не работает в осле, может работать в фф, или опере, да тупо возьми формат рисунков .png, в 6-м осле прозрачный слой заменяется голубым, я это знаю, потому что уже примерно год курю хтмл, а человек который вторую неделю пытается понять как сварганить скрипт, не знающий и не встречающий таких тонкостей тебе нифига не соберёт. Я могу тебя сейчас как лоха развести по сетям, по протоколам, как трафик идёт, как распределяется в коммутаторах, как вообще ты получаешь интернет, я могу положить карбину в Москве и после всего этого сказать тебе, да любой с этим справится, всего то надо иметь базовые знания сисадмина и погуглить чутка, но поверь мне, не хватит тебе знаний сисадмина, сисадмин и представления порой не имеет что на самом деле творится у провайдера и как организована сеть интернета, как взломать шлюз или точку доступа, как соединить висту и XP в локалку по кабелю и вайфаю или как сделать локалку не используя сторонних программ в разных городах, что такое vlan и зачем вообще он, как на одном коммутаорре под одной рабочей группой сделать две и более локалок, не видящих друг друга, ты хоть в курсе что виста не дружит с не зашифрованными сетями в стандартной настройке? Да ты вообще знаешь главное отличие профессионала от хом XP, или семёрки? Я профи в сетях, ты профи в js, обратись ты ко мне с вопросом как висту подружить с ХР и сделать между ними сетку вайфай-кабель, я тебе расскажу и объясню как это делается. Вопросы есть? Относись с пониманием, отбрось амбиции. Скрипт как не крути полезен, и поверь мне, в интернете далеко не 2 и не 3 вопроса как реализовать такое, хотя бы такое! Есть вариант через jquery, меня он не устроил, хоть и получился, а вот сделать именно так я не смог, потому я и обратился на этот форум за помощью. И что бы не считать тебя голословным: где ты был когда я задавал вопросы? Почему не ответил что исправить или как сделать такой скрипт? Не хотел? Ну извини, тогда чего ты мне тут выступать начал? Вы ведь только за деньги готовы помогать, и тогда бы, возможно ты этот скрипт назвал офигенно трудным, начал бы мне втирать что там на уровне движка надо капать как было в каком то посту в самом начале этой темы, а нашёлся человек который ответил, помог разобраться, благодаря ему я получил полезные знания и немного опыта, к тому же на халяву, а ты мне рассказал почему так надо было сделать а не иначе? Ему я благодарен за то, что скрипт работает как я хотел, не тебе - кто сказал что кому то понадобится сделать иначе и что делается это очень легко. Кроме голых слов ничего в этой теме от тебя, но похоже ты помогал людям хорошо, раз у тебя благодарностей так много. Я считаю что администратор сайта не против что я ему немного оптимизировал поисковый запрос по этому скрипту, ну а если ему он не нужен, пусть сам решает как быть.

PeaceCoder 19.12.2009 00:55

тише тише.. дети спят не кричи ты так =)
П.С. а колай(коляй?) неплохой парень. сегодня тоже с ним немного поругались, но пришли к решению... к тому же узнал что он является разработчиком(со-?) extJS, что несомненно говорит об его опыте работы с js, т.к. эта библиотека хороша по возможностям.

Kolyaj 19.12.2009 09:03

Nushaba,
извини, ниасилил :)

Цитата:

Сообщение от PeaceCoder
к тому же узнал что он является разработчиком(со-?) extJS

Это ты где такое узнал? Тебя дезинформировали :)

x-yuri 19.12.2009 09:17

Цитата:

Сообщение от Kolyaj
Так что если [censored], как вы, найдет эту тему, скорее всего она ему не поможет, т.к. вроде бы то, но не совсем, а чуть доделать в силу полного нуля в JS нет возможности.

Если же базовые знания (не JS, а хотя бы программирования вообще) имеются, то написать такой скрипт несложно и без этой темы. Всего-то надо нагуглить функции установки кук и функцию confirm.

+1. Nushaba, ты можешь, кончено, рассказывать, сколько ты всего знаешь, но прикол в том, что сколько бы ни было решений на форуме, все равно приходят люди и спрашивают то же самое или просто "нашел похожую тему, но надо, чтобы..." ;)

Nushaba 19.12.2009 10:51

x-yuri , да это по любому, но вариант вызова такого окна один, что там по другому то делать? ) Если только текст написать свой, по кнопке нет отправлять на другой сайт и так далее? ) Это уже даже не программист сможет. К стати по вашему форуму я искал решения, темы похожие, но они либо не завершены,либо совсем не то, и даже близко не похожи. Ну а если не устроит их такой скрипт, пусть делают через jquery, в интернете полно мануалов, или спрашивают у вас уже ) Я один из таких, кто спросил :) Правда мне кроме этого варианта никакие больше не подходят, у меня на сайте флеш на страницах и jquery не может перед ними встать, получается не красиво, дело даже не в z-index, я хз почему так, но если честно и не искал особо, ибо всё равно вариант не понравился тот.
PeaceCoder, ок, Kolyaj свой парень ;)

PeaceCoder 19.12.2009 14:06

Цитата:

Сообщение от Kolyaj
Это ты где такое узнал? Тебя дезинформировали

Я везде =)

http://kolyaj.moikrug.ru/
Цитата:

Участие в создании системы статистики Webvisor. Разработка клиентского интерфейса (ExtJS), систем записи (исключительно кроссбраузерный JavaScript без использования фреймворков) и воспроизведения посещений. Верстка сайта.
Или я не правильно понял или правильно?

B~Vladi 19.12.2009 20:55

Цитата:

Сообщение от PeaceCoder
Разработка клиентского интерфейса (ExtJS)

Здесь нужно читать так:
Разработка клиентского интерфейса средствами ExtJS.

PeaceCoder 19.12.2009 23:27

ну знач написать надо
Разработка клиентского интерфейса (на ExtJS)
или
Разработка клиентского интерфейса средствами ExtJS.

непонятно.... спилберг!

x-yuri 20.12.2009 11:43

ну ты пока первый, кто неправильно понял (;

Nushaba 22.12.2009 15:34

Юзал скрипт, наткнулся на недоработку, теперь с этим скриптом у меня нету возможности вернуться назад на одну страницу, по нажатии кнопки в браузере

Происходит редирект моментальный, происходит он потому, что я так ему сказал ) При наличии куков скрипт работает на пропуск на страницу (редирект), которую я хотел посетить. Но в том то и беда, этот скрипт теперь очень неоднозначно реагирует на кнопку "возврат", так как скрипт работает на каждой странице, то появление окошка с вопросом считается очередной страницей и по кнопке назад я попадаю на страницу срабатывания скрипта, где по проверке наличия куков он меня отправляет на запрашиваемую страницу, которой считается та страница, откуда я хотел уйти... В принципе решить проблему можно переписав скрипт немного, надо это:
if (myVar == 1)// проверка на то есть куки или нету, если есть то переход без вопроса иначе задается вопрос
{
history.go(1);
}

переписать на остановку скрипта при наличии куков.
if (myVar == 1)// проверка на то есть куки или нету, если есть то остановить (не выполнять) скрипт иначе задается вопрос
{
стоп скрипт;
}


Видимо нужно избавиться от хистори, подскажите какое решение плиз.

Nushaba 23.12.2009 21:44

Что то снова нету желающих помочь :) Попробуйте только сказать что это элементарно )
В общем избавился я от хистори, получилось следующее:

if (myVar != "1")// проверка на то есть куки или нету, если есть то не выполнять скрипт иначе задается вопрос
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 Cookie.set("имя_для_куков", "1");
 }
 else
 {location.href = "http://javascript.ru/";}
}


Скрипт работоспособный, не глючный кажется. Первый пост обновил.

Tanjushka 10.06.2012 18:55

Парни, а кто знает как вместо сообщения в этом скрипте из первого поста вывести div с 2 ссылками? По одной будет разрешаться заходить на сайт, а по другой будет переход на поисковик (переход сделать я сама смогу )))
А то сообщение некрасиво смотрится, а div можно ведь украсить )))

devote 10.06.2012 19:17

<!DOCTYPE html>
<html>
    <head>
    <style>
        #fillBackground {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #fff;
        }
    </style>
    </head>
    <body>
<div id="fillBackground">
    <a id="enter_site" href="">Зайти</a><br/>
    <a id="exit_site" href="">Не Зайти</a>
</div>
<div>Сомнительная инфа :)</div>

<script type="text/javascript">

    var Cookie = {
        set: function(name, value, expires, path, domain, secure) {
            document.cookie = name + "=" + escape(value) +
                ((expires) ? "; expires=" + expires : "") +
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                ((secure) ? "; secure" : "");
        },
        get: function(name) {
            var prefix = name + "=";
            var cookieStartIndex = document.cookie.indexOf(prefix);
            if (cookieStartIndex == -1) return null;
            var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
            if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
            return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
        },
        del: function(name, path, domain) {
            if ( this.get( name ) ) {
                document.cookie = name + "=" +
                    ((path) ? "; path=" + path : "") +
                    ((domain) ? "; domain=" + domain : "") +
                    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
            }
        }
    }

    if ( Cookie.get("test") != "1" ) {
        document.getElementById( 'fillBackground' ).style.display = 'block';
    }

    document.getElementById( 'enter_site' ).onclick = function() {
        Cookie.set("test", "1");
        document.getElementById( 'fillBackground' ).style.display = 'none';
        return false;
    }

    document.getElementById( 'exit_site' ).onclick = function() {
        location.href = "http://javascript.ru/";
        return false;
    }
</script>
    </body>
</html>

Tanjushka 10.06.2012 19:35

devote, спасибочки тебе! Цем-цем

ruslan_kulikow 20.12.2013 21:24

var Cookie = new Object();
Cookie.set = function(name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    }
Cookie.get = function(name) {
  var prefix = name + "=";
  var cookieStartIndex = document.cookie.indexOf(prefix);
  if (cookieStartIndex == -1) return null;
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
  if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
  }
Cookie.del = function(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }
var myVar = null;// просто переменная со значением, для проверки кукисов
myVar = Cookie.get("имя_для_куков");
if (myVar != "1")// проверка на то есть куки или нету, если есть то не выполнять скрипт иначе задается вопрос
{
 var zayti = confirm("Вы точно хотите сюда войти? \n Если нет, нажмите ОТМЕНИТЬ и Вы перейдёте туда, куда я вас послал.");
 if (zayti){
 Cookie.set("имя_для_куков", "1");
 }
 else
 {location.href = "http://javascript.ru/";}
}


использовал это код. Не подскажете, как его изменить, чтобы срок действия кука был 1 день, с момента его получения?


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