It is necessary that the person who visited the site after 10 seconds showed a block with a hint. after 20 seconds or by pressing the cross the block closed itself.

After a random amount of time appeared again, and so no more than 10 times a day. Even if the person left the page and then came back the script continued. I decided to do all this through cookies, but I got confused strongly ...

Help me please.

My code is:

$(document).ready(function(){ ceckf(); }); var infoblock_cookie_dead = "infoblock_cookie_dead"; // Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΡƒΠΊΡƒ var infoblock_cookie_count_view = "infoblock_count_view977"; // Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΡƒΠΊΡƒ var infoblock = document.getElementById("infoblock"); //Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ var d = new Date(); d.setDate(d.getDate() + 1); // устанавливаСм врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΡƒΠΊΠΈ для подсчСта ΠΏΠΎΠΊΠ°Π·ΠΎΠ² t = d.setTime(d.getTime()); // для Ρ€Π°Π½Π΄ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠ°Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. var randtime = Math.floor(Math.random()*1000+1); // Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ количСство сСкунд сколько Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠΈΡ‚ΡŒ ΠΊΡƒΠΊΠ° ΠΎΡ‚ 1 Π΄ΠΎ 1000 сСкунд time_dead_cookie = t + (randtime*1000); // Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя + случаноС количСство сСкунд ΠΎΡ‚ 1 Π΄ΠΎ 1000 // функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ function ceckf() { if(!getCookie(infoblock_cookie_dead) && getCookie(infoblock_cookie_count_view) <= 10) { // провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΡƒΠΊΠΈ viewblock(); } } function viewblock() { setTimeout(function(){ infoblock.style.display = "block"; // ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ //document.cookie = ""+ infoblock_cookie_dead + "=1;expires="+time_dead_cookie+"; path='/'"; // записываСм ΠΊΡƒΠΊΡƒ для ΠΏΠΎΠΊΠ°Π·Π° Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π½Π΄ΠΎΠΌΠ½ΠΎΠ΅ врСмя ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ if(!getCookie(infoblock_cookie_count_view)) { document.cookie = ""+ infoblock_cookie_count_view + "=1;expires="+d.toUTCString()+"; path='/'"; } else { document.cookie = ""+ infoblock_cookie_count_view + "=2;expires="+d.toUTCString()+"; path='/'"; } setTimeout(function(){ infoblock.style.display = "none"; // проявляСм ceckf(); },20000); // 20000 = 20 сСкунд, вСрмя Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ закроСтся ΠΎΠΊΠ½ΠΎ $(".infoblock-close").click(function(){ infoblock.style.display = "none"; ceckf(); }); // Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ },10000); // Ρ‡Π΅Ρ€Π΅Π· сколько покаТСтся Π±Π»ΠΎΠΊ послС открытия страниц 10000 = 10 сСкундам } // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΊΡƒΠΊΡƒ function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : false; } 

1 answer 1

For example, you can do this:

 // расписаниС ΠΏΠΎΠΊΠ°Π·ΠΎΠ² var schedule = [], // функция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ callback = function(){ alert(123); }; // срабатываСт Π½Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΈ запускаСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ function call() { // провСряСм, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π»ΠΈ функция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ if (typeof callback === "function") { // Ссли Π΄Π°, запускаСм... callback(); } // снова запускаСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ if (schedule.length > 0) { run(); } } // функция Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ расписаниС ΠΈ запускаСт Ρ‚Π°ΠΉΠΌΠ΅Ρ€ function run() { // Π²Ρ‹Ρ€Π΅ΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· расписания Π² эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ var current = schedule.shift(); // Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт расписания ΡƒΠΊΠ°Π·Π°Π½ Π² Π²ΠΈΠ΄Π΅ массива if (current instanceof Array) { // Ρ‚ΠΎΠ³Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ случайноС число current = Math.floor(Math.random() * (current[1] - current[0] + 1)) + current[0]; } // Π² ΠΈΡ‚ΠΎΠ³Π΅, Ссли Π΅ΡΡ‚ΡŒ число if (typeof current === "number") { // Π·Π½Π°Ρ‡ΠΈΡ‚ запускаСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€ с Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ setTimeout(call, current * 1000); } } // ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запуск Ρ‡Π΅Ρ€Π΅Π· 10 сСк. schedule.push(10), // Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π² случайном ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 5 ΠΈ 10 ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ schedule.push([300, 600]), // Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ... schedule.push([800, 1000]) // ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅... // запускаСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€ run(); 

Schedule I suggest to store either in cookies or in localStorage. Accordingly, before running the script, the schedule must be read from the local storage or cookies and recorded back when changing