Antworten auf deine Fragen:
Neues Thema erstellen

[JS] Öffnen von DIV nur einmalig

Hansi05

Aktives Mitglied

Öffnen von DIV nur einmalig

Hallo,

ich hab im Netz ein Script gefunden mit dem ich eine DIV öffnen kann, wenn ich eine Seite lade. Was ich gerne hätte, ist dass sich die DIV nur einmal bei öffnet, also der User schließt die DIV, geht dann noch mal drauf und dann soll die nicht noch mal kommen.

Hier mal der Link:

Ich hoffe ihr könnt mir helfen.

mfg
 
Zuletzt bearbeitet:

Doitsu

Aktives Mitglied

AW: [JS] Öffnen von DIV nur einmalig

Ich wuerde mit PHP arbeiten, also wenn das div ausgeblendet wird, setzt du eine Session, wenn es diese gibt wird das Div nicht mehr angezeigt - Dazu muesstest du dann entweder mit AJAX arbeiten, oder, wenn man das Div ausblendet die Seite neu laden .. & was an die URL anfuegen, damit PHP auch weiss: Div nun nicht mehr einblenden..
 

rr52

riepograf

AW: [JS] Öffnen von DIV nur einmalig

Du musst mit der passenden Programmiersprache, der Vorschlag mit php ist sinnvoll, eine Variable bereitstellen, in die du den erfolgten Aufruf des Links einträgst. Dieser Variablenwert muss in einem Cookie gespeichert werden, damit beim nächsten Seitenaufruf wieder der Ursprungszustand eintritt.
Rudolf
 

sokie

Mod | Web

AW: [JS] Öffnen von DIV nur einmalig

Javascript.wenn der popup bei späteren Besuchen nicht wieder erscheinen soll, kannst du es mit einem cookie machen.
soll der Popup nur nicht angezeigt werden solange der Besucher in der Seite navigiert, kannst du zB den Fensternamen (window.name) auf einen bestimmten Wert setzen, und das Öffnen des Popups davon abhängig machen, ob das Fenster den Namen hat(nicht hat).
 

Hansi05

Aktives Mitglied

AW: [JS] Öffnen von DIV nur einmalig

Danke erst mal für eure Antworten, ich hab das jetzt folgendermaßen versucht zu lösen:
Seite auf der die DIV angezeigt wird beim Öffnen, dann drückt man auf schließen, da kommt man auf ne Seite wo ein Cookie gesetzt wird. Der Cookie hat bspw. den Inhalt "1". Die Seite wird also geöffnet und dann setzt es den Cookie und man wird sofort wieder zurück geleitet und die DIV wird nicht mehr geöffnet, weil ich über eine if-Funktion gesagt hab, wenn Cookie == 1 dann nicht laden.
Klappt auch auf Testseiten, aber nicht auf der richtigen Seite.

Hier mal die Codes meiner Testseiten:

index.php
Code:
<?php

$s1 = $_GET['s1'];

if (empty($s1) || !file_exists($s1.'.php')) {
    $s1 = "ausgabe";
}
?>
<?php include($s1.'.php'); ?>
<br>
<a href="cookies.php">Cookie setzen</a>

cookies.php

Code:
<?php
$value = 'off';
setcookie("popup_off", $value);  /* verfällt in 1 Stunde */

$insertGoTo = $_SERVER['HTTP_REFERER'];

header("Location: $insertGoTo");
?>

ausgabe.php
Code:
<?php 
if ($_COOKIE['popup_off'] == 'off') { $popup = "off"; } else { $popup = "on"; }
echo $popup;
?>

Das klappt prima, jetzt mal die Praxisanwendung:

index.php
Code:
<?php
if($_COOKIE['popup'] == zu){echo "Popup zu";} else {echo "popup offen";}
require_once('func.getCounter.php');
require('inc.counter.php');
include('template/sections.php');
include('template/template.test.php');
?>

Im Template öffnet sich die DIV, Schließen-Button leitet zu cookie.php weiter:

Code:
<?php
$value = 'zu';
setcookie("popup", $value);  /* verfällt in 1 Stunde */

$insertGoTo = $_SERVER['HTTP_REFERER'];

header("Location: $insertGoTo");
?>

Damit ist der Cookie gesetzt und es sollte "Popup zu" ausgegeben werden, es wird aber "Popup offen" ausgegeben ...

Falls noch weitere Codes gebraucht werden, einfach Bescheid geben, hab erst mal nur die genommen, die ich als sinnvoll erachtet habe ;)

EDIT:

Wenn es noch interessiert, hier noch mal die sections.php:

Code:
<?php

$s1_1 = $_GET['s1'];

$s2_1 = $_GET['s2'];

$s1 = $_GET['s1'];

if (empty($s1) || !file_exists('section/'.$s1.'/')) {
    $s1 = 'Home';
}

$s2 = $_GET['s2'];
			
if (empty($s2) || !file_exists('section/'.$s1.'/'.$s2.'/')) {
	$s1 = 'Home';
	$s2 = 'Home'; 
}

$s3 = $_GET['s3'];
			
if (empty($s3) || !file_exists('section/'.$s1.'/'.$s2.'/'.$s3.'.php')) {
	$s3 = 'content_s1'; 
}

$kalender = $_GET['kalender'];

if (empty($kalender) || !file_exists('section/'.$s1.'/'.$s2.'/kalender/'.$kalender.'.php')) {
    $kalender = date('F');
}

$termin = $_GET['termin'];

if (empty($termin) || !file_exists('section/'.$s1.'/'.$s2.'/termine/'.$termin.'.php')) {
    $termin = 'leer';
}
?>

Das Template und Inhalt reinladen und alles geht, ist vllt nicht gerade schön gemacht, aber reicht für meine bescheidenen Kenntnisse, es geht mir echt nur um den Cookie und die DIV ...

Und noch ein EDIT:

Wenn ich den Cookie setze, und per if-Funktion im Template gucke ob der gesetzt wurde, dann ist der laut der if-Funktion nicht gesetzt, aber wenn ich direkt nur die Template-Datei aufmache dann gibt der mir aus, dass der Cookie gesetzt ist.
 
Zuletzt bearbeitet:

Hansi05

Aktives Mitglied

AW: [JS] Öffnen von DIV nur einmalig

Hab den Fehler, die Datei zum Setzen der Cookies muss im Hauptverzeichnis direkt auf dem Server liegen und darf in keinem extra Ordner sein ...
 

Daviot

Noch nicht viel geschrieben

AW: [JS] Öffnen von DIV nur einmalig

Wie wäre eine reine JS lösung, dann sparst du dir das erneute laden der Seite.

eine Funktion schreiben die bei onclick aufgerufen wird und den div ausblendet und den cookie setzt.

den div würde ich mit style="display:none" ausblenden, als standardwert und beim aufrufen der Seite über eine weitere Funktion überprüfen ob ein cookie vorhanden ist und wenn nicht den Div einblenden

vlt. hilft dir diese Seite, damit du cookies mittels js behandeln kannst
JavaScript Artikel: Cookies in JavaScript - HTMLWorld
 

Hansi05

Aktives Mitglied

AW: [JS] Öffnen von DIV nur einmalig

Also, folgendermaßen sieht mein Java-Versuch aus:
Code:
<!-- 
Wenn Cookie gesetzt -> Visible nicht laden
Wenn Cookie nicht gesetzt  -> Visible laden
	-> Klick auf Schließenruft Funktion cookie setzen und Invisible auf 
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unbenanntes Dokument</title>
<script type="text/javascript">
function cookie() {
document.cookie = 'name=wert'; 
}

if(document.cookie){
	<!-- nichts passiert -->
	} else {
		obj = document.getElementById(obj);
		obj.style.visibility = (obj.style.visibility == 'visible') ? 'hidden' : 'visible';
	}
</script>
<style type="text/css"> 
#layer1 {
	position: absolute;
	visibility: hidden;
	width: 400px;
	height: 300px;
	left: 20px;
	top: 300px;
	background-color: #ccc;
	border: 1px solid #000;
	padding: 10px;
}
 
#close {
	float: right;
}
</style> 
</head>

<body>
<div id="layer1"> 
  <span id="close"><a href="javascript:setVisible('layer1'), cookie()" style="text-decoration: none"><strong>Hide</strong></a></span> 
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
    nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi
    enim ad minim veniam, quis nostrud exerci.</p>
</div> 
</body>
</html>

Bin halt kompletter Neuling auf dem Gebiet, kann mir jemand helfen? :eek:
 

Daviot

Noch nicht viel geschrieben

AW: [JS] Öffnen von DIV nur einmalig

geht auch etwas einfacher ;-)

Code:
<script type="text/javascript">
if(!document.cookie){
		document.cookie = 'div=1;'; 
		document.getElementById('popup').style.visibility = 'visible';
}
</script>


<div id="popup"> 
  <span id="close"><a href="#" onclick="document.getElementById('popup').style.visibility = 'hidden';" style="text-decoration: none"><strong>Hide</strong></a></span> 
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
    nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi
    enim ad minim veniam, quis nostrud exerci.</p>
</div>
 

Hansi05

Aktives Mitglied

AW: [JS] Öffnen von DIV nur einmalig

So klappt es endlich:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unbenanntes Dokument</title>
<style type="text/css"> 
#popup {
	position: absolute;
	visibility: hidden;
	width: 400px;
	height: 300px;
	left: 20px;
	top: 300px;
	background-color: #ccc;
	border: 1px solid #000;
	padding: 10px;
}
 
#close {
	float: right;
}
</style> 
<script type="text/javascript">
function setzen() {
if(!document.cookie){ 
		document.cookie = 'div=1;'; 
		document.getElementById('popup').style.visibility = 'visible';
}}
</script>
</head>

<body onLoad="setzen()">
<div id="popup"> 
  <span id="close"><a href="#" onclick="document.getElementById('popup').style.visibility = 'hidden';" style="text-decoration: none"><strong>Hide</strong></a></span> 
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
    nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi
    enim ad minim veniam, quis nostrud exerci.</p>
</div> 
</body>
</html>
 

Daviot

Noch nicht viel geschrieben

AW: [JS] Öffnen von DIV nur einmalig

meines wäre auch gegangen wenn der script tag im body gewesen wäre, hab ich aber vergessen dazuzuschreiben, also sorry :-(

naja gut das es jetzt bei dir funktioniert.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.636
Beiträge
1.538.496
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben