Javascript-форум (https://javascript.ru/forum/)
-   Работа (https://javascript.ru/forum/job/)
-   -   Окно приветствия (https://javascript.ru/forum/job/76727-okno-privetstviya.html)

admiral 07.02.2019 17:48

Окно приветствия
 
Всем привет, нужна помощь по написанию одного скрипта.
Когда человек, вошел на сайт, нужно подгрузить раньше всего, окно приветствия. Его код:
Код:

<div class="hello">
 <div class="hellotext">
        <div align="center" class="logo">
          <img src="/logo.png" alt="" />
          Добро пожаловать!
        </div>
 </div>
</div>

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

Я так полагаю что нужно запомнить что сайт показал один раз окно в кеш или куки, а после того как человек вышел, и грубо говоря в течении минуты не заходил на сайт, очистить эти куки или кеш. И так по кругу. Кто поможет готов отблагодарить финансово.

Nexus 07.02.2019 18:21

Какой язык на back-end'е?

admiral 07.02.2019 18:30

php. Сайт на wp.

laimas 07.02.2019 19:11

На JS делайте, если не знаете структуру модулей CMS.

admiral 07.02.2019 19:13

Цитата:

Сообщение от laimas (Сообщение 503302)
На JS делайте, если не знаете структуру модулей CMS.

Так а я что прошу? что бы мне на JS сделали. Написал что даже заплачу за работу.

laimas 07.02.2019 19:18

Nexus, сделает, у меня работы и так ... :) В WP нужно только соблюсти правила подключения пользовательских js-скриптов.

admiral 07.02.2019 19:24

Цитата:

Сообщение от laimas (Сообщение 503304)
Nexus, сделает, у меня работы и так ... :) В WP нужно только соблюсти правила подключения пользовательских js-скриптов.

Буду ему очень благодарен

ksa 08.02.2019 07:55

Цитата:

Сообщение от admiral
Кто поможет готов отблагодарить финансово.

Напугай цифрами! :D

ksa 08.02.2019 08:48

Цитата:

Сообщение от admiral
Буду ему очень благодарен

Вот и проверим. :yes:
Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	(function(){
		// Указать лимит по времени задержки в часах
		var limit=0.01;
		var hours=1000*60*60;
		var date = localStorage.getItem('date');
		if (date==null) {
			append();
		} else {
			date=new Date(date);
			date=(new Date()-date)/hours;
			if (date>limit) {
				append();
			};
		};
		function append() {
			var html;
			html='<div class="hello">';
			html+='<div class="hellotext">';
			html+='<div align="center" class="logo">';
			html+='<img src="/logo.png" alt="" />';
			html+='Добро пожаловать!';
			html+='</div>';
			html+='</div>';
			html+='</div>';
			$('body').append(html);
			var date=new Date();
			localStorage.setItem('date',date);
		};
	})();
});
</script>
</head>
<body>
</body>
</html>

Nexus 08.02.2019 09:56

<div class="hello" style="display:none" id="welcome-window">
	<div class="hellotext">
		<div align="center" class="logo">
			<img src="/logo.png" alt="" />
			Добро пожаловать!
		</div>
	</div>
</div>
<script>
(function(){
	const timestamp=new Date().getTime();//miliseconds
	const maxInactivePeriod=2;//hours
	const cookieName='welcome_window';
	let lastVisit;

	try{
		lastVisit=+(localStorage.getItem('lastVisit')||timestamp);
		localStorage.setItem('lastVisit',timestamp);
	}catch(e){
		lastVisit=timestamp;
		console.error(e);
	};

	if(
		lastVisit+maxInactivePeriod*3600*1000>timestamp && 
		document.cookie.indexOf(cookieName)>=0
	)
		return;

	const win=document.getElementById('welcome-window');
	if(!win)
		return;

	win.style.display='block';
	document.cookie='name='+cookieName+'; path=/;';
})();
</script>


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