ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (1): [1]   

> Без описания
Defenderyk
Отправлено: 21 апреля 2009 — 08:04
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




НАшел интересный скрипт всплывающего окна на аяксе для гостей.

Вызываетсо оно как я понял этой строкой:
document.body.onload = window.setTimeout("fireMyPopup()", 1500);

Но оно появляется постоянно при перезагрузке окна, а надо, чтобы всего один раз.

Сам скрипт:

CODE:

<script type='text/javascript'>

// Browser safe opacity handling function

function setOpacity( value ) {
document.getElementById("styled_popup").style.opacity = value / 10;
document.getElementById("styled_popup").style.filter = 'alpha(opacity=' + value * 10 + ')';
}

function fadeInMyPopup() {
for( var i = 0 ; i <= 100 ; i++ )
setTimeout( 'setOpacity(' + (i / 10) + ')' , 8 * i );
}
function myPopupRelocate() {
var scrolledX, scrolledY;
if( self.pageYOffset ) {
scrolledX = self.pageXOffset;
scrolledY = self.pageYOffset;
} else if( document.documentElement && document.documentElement.scrollTop ) {
scrolledX = document.documentElement.scrollLeft;
scrolledY = document.documentElement.scrollTop;
} else if( document.body ) {
scrolledX = document.body.scrollLeft;
scrolledY = document.body.scrollTop;
}

var centerX, centerY;
if( self.innerHeight ) {
centerX = self.innerWidth;
centerY = self.innerHeight;
} else if( document.documentElement && document.documentElement.clientHeight ) {
centerX = document.documentElement.clientWidth;
centerY = document.documentElement.clientHeight;
} else if( document.body ) {
centerX = document.body.clientWidth;
centerY = document.body.clientHeight;
}

var leftOffset = scrolledX + (centerX - 250) / 2;
var topOffset = scrolledY + (centerY - 200) / 2;

document.getElementById("styled_popup").style.top = topOffset + "px";
document.getElementById("styled_popup").style.left = leftOffset + "px";
}


function fadeOutMyPopup() {
for( var i = 0 ; i <= 100 ; i++ ) {
setTimeout( 'setOpacity(' + (10 - i / 10) + ')' , 8 * i );
}

setTimeout('closeMyPopup()', 800 );
}

function closeMyPopup() {
document.getElementById("styled_popup").style.display = "none"
}

function fireMyPopup() {
setOpacity( 0 );
myPopupRelocate();
document.getElementById("styled_popup").style.display = "block";
document.body.onscroll = myPopupRelocate;
window.onscroll = myPopupRelocate;
document.getElementById("styled_popup").style.display = "block";
fadeInMyPopup();
}

document.body.onload = window.setTimeout("fireMyPopup()", 1500);
</script>


И условие для гостей в движке:

CODE:

if (iGUEST) {
echo".............(кусок верски)
<a href='javascript:fadeOutMyPopup();'>
.(кусок верски)
";
}
 
 
Furax
Отправлено: 21 апреля 2009 — 13:17
Post Id



Пользователь
Newbie


Покинул форум
Сообщений всего: 49
Дата рег-ции: Февр. 2009  
Репутация: 8




Можно на том же JS завести cookie-запись "попап показан" и потом проверять:

CODE:
function fireMyPopup() {
if (document.cookie.indexOf('popupShown=true') != -1)
return;
document.cooke='popupShown=true;expires='+(new Date((new Date()).getTime()+1000*60*60*24*365)).toGMTString();
//Дальше весь код fireMyPopup()...
 
 
Александр Михалицын
Отправлено: 21 апреля 2009 — 16:29
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Defenderyk,
сразу добавлю.
Таймеры (setTimeout/setInterval) нужно юзать так:
CODE:
function(function object, time in milleseconds);

, а у тебя первый аргумент -- строка, да оно работает, но это неправильно, вот исправления:
CODE:
setTimeout(function(){setOpacity(i / 10)} , 8 * i );
document.body.onload = window.setTimeout(fireMyPopup, 1500);


Кстати в первом варианте, когда коллбэку передается еще и аргумент, очень удобно использовать усовершенствованный setTimeout/setInterval я их завтра выложу. Подмигивание
 
 
Александр Михалицын
Отправлено: 22 апреля 2009 — 07:19
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Вот, как и обещал.
http://forum.dklab.ru/viewtopic.php?t=26629

CODE:
setTimeout(function(i){setOpacity(i / 10)} , 8 * i, i );
document.body.onload = window.setTimeout(fireMyPopup, 1500);


Если нужно пояснить зачем это нужно и как использовать скажи... Подмигивание
(Добавление)
А вот еще реализация от меня. Не понял Я кстати сначало написал, а потом вспомнил что где-то подобное вот и отыскал на дклабе.

http://test.systemnik.net.ru/timers.js
 
 
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« PHP/Perl »

> Похожие темы: Popup но только один раз
Темы Форум Информация о теме Обновление
Текст не виден (почему то)?
Я понимаю, что это может увидеть только админ или модератор, но почему такая проблема (раньше не было)
Решение проблем Ответов: 8
Автор темы: robert
9 сентября 2009 — 18:29
Автор: yura3d
Аватар для admina
только для админа
Обсуждение Ответов: 20
Автор темы: wersi
3 июля 2011 — 04:38
Автор: electron
Проблема с движком ExBB_FM_1.0_RC1
Проблема с регистрацией и не только..........
Решение проблем Ответов: 4
Автор темы: Alex_66633
27 января 2011 — 14:44
Автор: Alex_66633
Проблема с ссылкой перенаправления на форуме
Ссылка на закрытый форум ( только для зарегистрированных пользователей).
Решение проблем Ответов: 3
Автор темы: alexx
16 апреля 2010 — 09:05
Автор: electron
Как подключить аватары с расширением gif в "Ваш профиль"?
Показываются только с расщирением jpg,а как сделать и с gif?
Настройка форума Ответов: 1
Автор темы: riogerto
3 октября 2009 — 06:26
Автор: electron
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0616]     [ ]