Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS Cookies, код попап-окна (https://javascript.ru/forum/misc/74679-js-cookies-kod-popap-okna.html)

user7143 31.07.2018 00:41

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

И еще вопрос, если данный код работает на одном сайте и срабатывает параллельно с разными значениями var url = "https://site1.com"; , var url = "https://site2.com"; , var url = "https://site3.com"; и т.д. что-то нужно поменять в коде чтобы он работал корректно и устанавливал свои куки на 12 часов для каждого из "var url"

Спасибо!


function doMyStuff($) {
  $(document).ready(function(){
    var ran_yet = false;
    $("a,body,input").click(function() {
      if (ran_yet) {
        return;
      }
      ran_yet = true;
      var cookiename = 'nopopsite';
      var val = getCookie(cookiename);
      if (!val) {
        val = 1;
      } else {
        val = parseInt(val);
      }
      setCookie(cookiename, val + 1, 1);      
      if (val != 1) {
        return;
      }
      var windowprops = "width=1024,height=768,location=yes,toolbar=yes,menubar=yes,status=yes,scrollbars=yes,resizable=yes,top=1,left=1";
      var url = "https://site.com";
      var myWin = window.open(url, "", windowprops);
      myWin.blur();
      window.focus();
    });
  });
}

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0; i < ARRcookies.length; i++)
{
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}


function check() {
  if (window.jQuery && jQuery.fn) {
    var arr = jQuery.fn.jquery.split('.');
    if (arr.length >= 2) {
      //jquery version 1.3 and up
      if (arr[0] > 1 || (arr[0] == 1 && arr[1] >= 3)) {
        return true;
      }
    }
  }
  return false;
}

if (check()) {
  doMyStuff(jQuery);
} else {
  var script = document.createElement('script');
  script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js';
  window.addEventListener('load', function () {
    document.body.insertBefore(script, document.body.firstChild);
    var timer = setInterval(function () {
      if (check()) {
        clearInterval(timer);
        document.body.removeChild(script);
        doMyStuff(jQuery.noConflict(true));
      }
    }, 30);
  });
}

user7143 31.07.2018 11:54

Спасибо большое за ответ, Rise!

Цитата:

Сообщение от Rise (Сообщение 491372)
Так не получится, только текущий домен и его поддомены.

Не подскажете еще, за что отвечает "var cookiename = 'nopopsite';", где сохраняется это название "nopopsite" и можно ли его поменять?

Наверное я не правильно объяснил изначально, но уверен что этот код будет работать и ставить разные куки для разных "var url" если его модифицировать как-то. Только вопрос в том как и что модифицировать. Наверное как раз имя куки(предположение)?

user7143 31.07.2018 13:16

Цитата:

Сообщение от Rise (Сообщение 491374)
Это имя куки, поменять можно.

Для чего эти url? Разные куки можно установить с разными имена, но установить их все можно только для текущего сайта.

Да, все верно, оно мне и нужно установить куки для текущего сайта с разными именами, и, соответственно с разными сроками жизни куки. Это нужно так как каждый раз скрипт открывает попап-окно с разным содержимым(var url для этого и нужен чтобы открывать внутри попапа разные URL), соответственно нужно что бы одно и то же содержимое не показывалось пользователям чаще чем, к примеру 1 раз в 12 часов.

Что я сделал, поменял для разного содержимого значение ключа cookiename "var cookiename = 'nopopsite';" на nopopsite1, nopopsite2, nopopsite3 и т.д., но в этом случае окна продолжают открываться словно куки не записываются пользователям.


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