Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Всплывающее модальное окно в определенные час. (https://javascript.ru/forum/misc/55886-vsplyvayushhee-modalnoe-okno-v-opredelennye-chas.html)

sheneman 19.05.2015 14:06

Всплывающее модальное окно в определенные час.
 
Доброго времени суток!
Подскажите, как вызвать модальное окно автоматически в определенный промежуток времени.
Нужно в ночные часы с 21:00 до 6:00 выкидывать новым пользователям модальное окно. Есть какие-то готовые примеры у кого?
Или подскажите как реализовать?
Окно должно всплывать у каждого уникального пользователя, с 21:00 до 6:00

kostyanet 19.05.2015 17:22

По таймеру ясень пень. Попробуйте еще уведомления. Как я понял юзеры лояльны, значит разрешает уведомлять их. Это будет выглядеть так: кнопка браузера в таскбаре начинает мигать, если свернут, а если развернут то сразу появится мессага в оконце.

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

Время - берется время на сервере и на клиенте, вычитается, получается смещение - на случай если у клиента часы барахлят. Это смещение учитывается. Остальное все просто setTimeout(func,time) и ждитё.

kostyanet 19.05.2015 17:27

А, блин, в смысле юзер зашел после 21 и его наградили оконцем? Ну а в чем там вообще проблема тогда?

sheneman 25.05.2015 10:38

kostyanet, Проблема в незнание JavaScript.
Я обычно копирую готовые примеры и допиливаю по справочникам. А тут как-то и примеров не нашел. Потому обратился на форум. как мне реализовать этот скрип?

Decode 25.05.2015 12:33

var now = new Date(),
	start = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 21),
	end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 06);

if ( now >= start && now <= end ) {
	if(localStorage.getItem("check") == null) showModal();
}

function showModal() {
	localStorage.setItem("check", true);
	alert("Привет, я модальное окно!");
}

vladchv 10.01.2018 11:14

Привет всем. Данная тема очень актуальна, но я так к сожалению и не понял как внедрить это все в имеющийся скрипт. Буду очень благодарен, если поможете. Скрипт окна:
$(document).ready(function() {
	$('a#go').click( function(event){
		event.preventDefault();
		$('#overlay').fadeIn(400,
		 	function(){
				$('#modal_form') 
					.css('display', 'block')
					.animate({opacity: 1, top: '50%'}, 200);
		});
	});
	$('#modal_close, #overlay').click( function(){
		$('#modal_form')
			.animate({opacity: 0, top: '45%'}, 200,
				function(){
					$(this).css('display', 'none');
					$('#overlay').fadeOut(400);
				}
			);
	});
});

рони 10.01.2018 11:24

vladchv,
:-?

vladchv 10.01.2018 11:28

???) Это что значит?) Мб с этим ПопАпом не возможно?

рони 10.01.2018 11:37

vladchv,
что хотите сделать? с чем у вас проблема? где html и css?

vladchv 10.01.2018 13:04

Хочю чтобы вот этот попап всплывал только с 7 вечера до 9 утра)) В начале поста выложили решение вроде, но я не знаю как его внедрить конкретно к данному коду.

<div id="modal_form">
      <span id="modal_close">X</span>
	  <form id="form" class="phone_form">
<p id="modal1Title">Заказать обратный звонок</p>
        <div class="f-b user_phone"><p>Тел.:</p><input id="telephone-1" autocomplete="off" name="phone" type="tel" class="putPhone rfield" placeholder="(___) ___ __ __" required></div>
		<div class="f-b"><p>Ваше имя:</p><input autocomplete="off" type="text" class="putName" name="name" placeholder="..." required></div>
        <input type="submit" name="submit" class="btn" value="Отправить заявку">
    </form>
</div>
<div id="overlay"></div>


$(document).ready(function() {
	$('a#go').click( function(event){
		event.preventDefault();
		$('#overlay').fadeIn(400,
		 	function(){
				$('#modal_form') 
					.css('display', 'block')
					.animate({opacity: 1, top: '50%'}, 200);
		});
	});
	$('#modal_close, #overlay').click( function(){
		$('#modal_form')
			.animate({opacity: 0, top: '45%'}, 200,
				function(){
					$(this).css('display', 'none');
					$('#overlay').fadeOut(400);
				}
			);
	});
});

рони 10.01.2018 13:37

vladchv,
$(function() {
  var now = new Date,
      start = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 19),
      end = new Date(now.getFullYear(), now.getMonth(), now.getDate()+1, 9);
  if (now >= start && now <= end) {
    if (localStorage.getItem("check") == null) {
      showModal();
    }
  }
  function showModal() {
    localStorage.setItem("check", true);
    $("#overlay").fadeIn(400, function() {
      $("#modal_form").css("display", "block").animate({opacity:1, top:"50%"}, 200);
    });
  }
  $("#modal_close, #overlay").click(function() {
    $("#modal_form").animate({opacity:0, top:"45%"}, 200, function() {
      $(this).css("display", "none");
      $("#overlay").fadeOut(400);
    });
  });
});

Dilettante_Pro 10.01.2018 16:01

Вариант контроля времени:
var now = (new Date).getHours(),
      start =  17,
      end =  9;
  if (now > end && now < start) {
     alert("Попап  не нужен");
  } else { alert("Попап");}

рони 10.01.2018 16:08

Dilettante_Pro,
:blink:

Dilettante_Pro 10.01.2018 16:20

рони,
Что не нравится?

А по вашему варианту - допустим, я зашел сегодня в 8 утра. И что будет? Должно ли выскочить модальное окно?

рони 10.01.2018 16:38

Dilettante_Pro,
спасибо за идею ... немного не разобрался вначале
$(function() {
  var now = (new Date).getHours(),
      start = 19,
      end = 9;
  if (!(now > end && now < start)) {
    if (localStorage.getItem("check") == null) {
      showModal();
    }
  }
  function showModal() {
    localStorage.setItem("check", true);
    $("#overlay").fadeIn(400, function() {
      $("#modal_form").css("display", "block").animate({opacity:1, top:"50%"}, 200);
    });
  }
  $("#modal_close, #overlay").click(function() {
    $("#modal_form").animate({opacity:0, top:"45%"}, 200, function() {
      $(this).css("display", "none");
      $("#overlay").fadeOut(400);
    });
  });
});

vladchv 10.01.2018 17:00

Спасибо огромное)


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