ExBB Community » » PHP/Perl » Popup но только один раз

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

1. Defenderyk - 21 апреля 2009 — 08:04 - перейти к сообщению
НАшел интересный скрипт всплывающего окна на аяксе для гостей.

Вызываетсо оно как я понял этой строкой:
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();'>
.(кусок верски)
";
}
2. Furax - 21 апреля 2009 — 13:17 - перейти к сообщению
Можно на том же 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()...
3. Александр Михалицын - 21 апреля 2009 — 16:29 - перейти к сообщению
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 я их завтра выложу. Подмигивание
4. Александр Михалицын - 22 апреля 2009 — 07:19 - перейти к сообщению
Вот, как и обещал.
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

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

Powered by ExBB
[Script Execution time: 0.0382]     [ ]