 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
09.05.2007, 10:26
|
#1
|
|
TP-Member
Registriert seit: Mar 2001
|
Layer-"PopUp" mit Cookie? Wie kann ich altes PopUp Script anpassen?
Hallo,
ich habe eine altes Script welches beim Betreten einer Seite automatisch ein PopUp Fenster öffnet und einen Cookie setzt um den User nicht zu häufig mit dem PopUp zu belästigen.
Nachdem ich das PopUp geschaltet hatte hat Google allerdings meine Seite gesperrt. Nun hab ich auf das automatische PopUp verzichtet und setze statt dessen einen Layer ein, der automatich eingeblendet wird und aussieht wie ein PopUp. Allerdings wird dieser nun bei jedem Besuch der Seite angezeigt, was ich gerne wieder anhand eines Cookies steuern würde.
Unten poste ich mal das alte PopUp-Cookie Script - wahrscheinlich müsste man nur var page, var windowprops und den Teil in if (count == null) { ...... } anpassen - leider weiß ich nicht wie...der Layer hat eine ID, anhand derer man ihn sicher ansprechen könnte...
Kann mir da jemand helfen? Wäre total super
Code:
<SCRIPT LANGUAGE="JavaScript">
<!-- Verstecken für ältere Browser --
var expDays = 14;
// Anzahl der Tage, die das Cookie gültig sein soll
var page = "http://www.areablue.de/janbreier.html";
// Seite, die aufgerufen wird
var windowprops = "width=490,height=290,left=200,top=200,location=no,toolbar=no,menubar=no,scrollbars=no,resizable=yes";
// Angabe über die neue Seite: Breite, Höhe, Ort, Aussehen
// Überprüfung, ob Cookie gesetzt:
function checkCount() {
var count = GetCookie('count');
// Wenn der Zähler Null ist, wird er auf 1 gesetzt,
// das Cookie gesetzt und das neue Fenster geöffnet:
if (count == null) {
count=1;
SetCookie('count', count, exp);
window.open(page, "", windowprops);
}
// Anderenfalls wird nur der Zähler erhöht
// und das Cookie überschrieben.
else {
count++;
SetCookie('count', count, exp);
}
}
//Cookie lesen:
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
// Cookie-Wert auslesen:
function getCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
// Cookie setzen:
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
// PopUp aufrufen:
window.onload=checkCount;
// Ende verstecken -->
</script>
|
|
|
09.05.2007, 21:00
|
#2
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Homburg / Saarland
|
Hallo Jan,
schau' Dir mal das folgende an: Vielleicht ist das für Deine Zwecke auch in Ordnung:
Demo
Code:
<html>
<head>
<script language="JavaScript" type="text/javascript" src="libCookies.js"></script>
<script type="text/javascript">
function initPage()
{
myCookies = getCookies();
if ( myCookies[ "popupDisplayed" ] == null )
{
setCookie( "popupDisplayed" , "1" );
document.getElementById( "myPopup" ).style.display = "block";
};
};
</script>
<style type="text/css">
#myPopup {
display: none;
border: solid 2px black;
padding: 4px;
background-color: yellow;
width:200px;
text-align: center;
position: absolute;
top: 100px;
left: 100px;
}
</style>
</head>
<body onload="initPage()">
<div id="myPopup">Dies ist ein Popup,<br>das nur einmal erscheint!<br><br>
<input type="button" value="Fenster schließen" onclick="document.getElementById('myPopup').style.display='none'"></div>
</body>
</html>
Auszug: libCookies.js
Code:
function getCookies()
{
var result = [] , i , values ,
storedCookies = document.cookie.split(";");
for ( i=0;i<storedCookies.length;i++)
{
values = storedCookies[ i ].split("=");
result[ values[0].replace(/^ /,'') ] = values[ 1 ]; // Leerzeichen entfernen
};
return result;
}
function setCookieTime( days )
{
if ( !days )
return ( new Date( 2037 , 0 , 1 )).toGMTString();
return new Date( ( new Date().getTime() + 1000 * 3600 * 24 * days ) ).toGMTString();
}
function setCookie( name , value )
{
document.cookie = name + "=" + unescape( value ) + ";"+
"expires=" + setCookieTime() + ";";
}
function deleteCookie( cookieName )
{
document.cookie = cookieName + "=;expires=" + setCookieTime( -1 );
}
tschau
Frank
Geändert von Malleus (10.05.2007 um 20:49 Uhr).
Grund: Scriptfehler bei "deleteCookie"
|
|
|
09.05.2007, 21:36
|
#3
|
|
TP-Member
Registriert seit: Mar 2001
|
Wow!
Das ging ja mal wieder super schnell! Funktioniert großartig! Vielen vielen vielen Dank 
Gruß, Jan
|
|
|
22.05.2007, 17:54
|
#4
|
|
TP-Newbie
Registriert seit: May 2007
|
Hallo Frank,
hab Deinen Code über Google gefunden. Kann man den auch so anpassen, dass
eine Seite in dem Frame geladen wird?
Danke und Grüße Thomas
|
|
|
22.05.2007, 21:39
|
#5
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Homburg / Saarland
|
Hallo Thomas,
da ich nicht genau weiß, wie's bei Dir aussieht, gibt's mal folgenden Ansatz:
Du hast ein Frame mit dem Namen "myPopupFrame". Dann kannst Du diesen Frame wie folgt umschalten:
Code:
function initPage()
{
myCookies = getCookies();
if ( myCookies[ "popupDisplayed" ] == null )
{
setCookie( "popupDisplayed" , "1" );
document.frames["myPopupFrame"].location.replace("neueSeite.html")
};
};
Tschau
Frank
|
|
|
04.06.2007, 01:29
|
#6
|
|
TP-Newbie
Registriert seit: Jun 2007
|
Popup im IE 7 kommt immer wieder, im FF klappt es
Hallo!!!
Ich bin neu und habe mich direkt ein bischen eingelesen. Dabei habe ich diesen Thread gefunden und mal etwas ausprobiert.
Ich habe einen Shop, bei dem ich das Popup so wie oben eingebaut habe. Im FireFox funktioniert das ganze wunderbar (Cookie wird gespeichert und das Popup erscheint erst nach Löschung des Cookies wieder).
Im InternetExplorer dagegen kommt das Popup andauernd, d.h. bei jedem Link. Gibt`s da eventuell einen Bug?
Grüße & Danke
tvttotal
|
|
|
19.04.2008, 11:21
|
#7
|
|
TP-Newbie
Registriert seit: Apr 2008
|
Zitat:
Zitat von Malleus
Hallo Jan,
schau' Dir mal das folgende an: Vielleicht ist das für Deine Zwecke auch in Ordnung:
Demo
Code:
<html>
<head>
<script language="JavaScript" type="text/javascript" src="libCookies.js"></script>
<script type="text/javascript">
function initPage()
{
myCookies = getCookies();
if ( myCookies[ "popupDisplayed" ] == null )
{
setCookie( "popupDisplayed" , "1" );
document.getElementById( "myPopup" ).style.display = "block";
};
};
</script>
<style type="text/css">
#myPopup {
display: none;
border: solid 2px black;
padding: 4px;
background-color: yellow;
width:200px;
text-align: center;
position: absolute;
top: 100px;
left: 100px;
}
</style>
</head>
<body onload="initPage()">
<div id="myPopup">Dies ist ein Popup,<br>das nur einmal erscheint!<br><br>
<input type="button" value="Fenster schließen" onclick="document.getElementById('myPopup').style.display='none'"></div>
</body>
</html>
Auszug: libCookies.js
Code:
function getCookies()
{
var result = [] , i , values ,
storedCookies = document.cookie.split(";");
for ( i=0;i<storedCookies.length;i++)
{
values = storedCookies[ i ].split("=");
result[ values[0].replace(/^ /,'') ] = values[ 1 ]; // Leerzeichen entfernen
};
return result;
}
function setCookieTime( days )
{
if ( !days )
return ( new Date( 2037 , 0 , 1 )).toGMTString();
return new Date( ( new Date().getTime() + 1000 * 3600 * 24 * days ) ).toGMTString();
}
function setCookie( name , value )
{
document.cookie = name + "=" + unescape( value ) + ";"+
"expires=" + setCookieTime() + ";";
}
function deleteCookie( cookieName )
{
document.cookie = cookieName + "=;expires=" + setCookieTime( -1 );
}
tschau
Frank
|
Hallo an Alle,
ich weiß, dieses Thema ist schon alt, aber ich habe mal eine Frage dazu.
Wie kann ich den Cookie so einstellen, dass dieser nur 12 Stunden gültig ist?
Ich habe davon absolut keinen Durchblick.
Vielen Dank im Voraus
Nicky
|
|
|
19.04.2008, 19:13
|
#8
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Homburg / Saarland
|
Hallo Nicky,
versuch' mal folgendes:
Die "initPage"-Funktion änderst Du wie folgt ab:
PHP-Code:
function initPage()
{
myCookies = getCookies();
if ( myCookies[ "popupDisplayed" ] == null )
{
//setCookie( "popupDisplayed" , "1" );
setCookieWithTime( "popupDisplayed" , "1", 0.5 );
document.getElementById( "myPopup" ).style.display = "block";
};
};
Dann fügst Du eine neue Funktion in der "libCookies.js"-Datei ein:
PHP-Code:
function setCookieWithTime( name , value, cookieTime )
{
document.cookie = name + "=" + unescape( value ) + ";"+
"expires=" + setCookieTime( cookieTime) + ";";
}
Das sollte es gewesen sein.
Tschau
Frank
P.S. Noch ein kleiner Nachtrag für "tvtotal". Hast Du mal überprüft, ob Du Cookies im IE zuläßt? ( Das wirst Du wahrscheinlich nicht mehr lesen, sorry, hab' Deine Frage irgendwie übersehen )
|
|
|
19.04.2008, 20:24
|
#9
|
|
TP-Newbie
Registriert seit: Apr 2008
|
Hallo Malleus,
herzlichen Dank für deine Antwort und Lösung.
Viele Grüße
Nicky
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:47 Uhr.
|
 |