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


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