# Mehrere Popups automatisch wieder schließen



## DJCanni (7. November 2007)

Hallo Leute!

Mein Problem:
Wenn man auf EINEN Link klickt sollen sich MEHRERE Popups in jeweils einem kleinen Fenster öffnen und nachdem sie fertig geladen sind wieder automatisch schließen.
Außerdem soll eine Seite sich ganz normal öffnen und auch geöffnet bleiben.

Habe heute den ganzen Tag probiert es selbst hinzubekommen, aber es hat sich immer nur das letzte Popup geöffnen und ist dann auch offen geblieben 
Hoffe ihr könnt mir weiterhelfen.


MfG
DJCanni


----------



## con-f-use (7. November 2007)

```
// Öffnet 10 Fenster und erzeugt ein Array (arr) mit Referenzen
//+auf die einzelnen Fenster damit sie später wieder geschlossen werden
//+können
for(i=0; i<10; ++i) {
    arr[i] = window.open('seite'+ i +'.html','Fenster'+ i,'width=200');
}

// Öffnet das letzte Fenster, dass sich nicht wieder schließen soll
window.open(...)    // "..." ist hier ein Platzhalter für die Parameter
 
// Prüft alle zehntel Sekunde, ob die Fenster fertig geladen wurden 
//+und schliesst die fertig geladenen dann sofort
setIntervall('closeOnLloaded()',100);
function closeOnLloaded() {
    for( i=0; i<arr.length; ++i)
         if( arr[i].document.getElementsByTagName('body')[0] )
              arr[i].close();
}
```
 
Prinzip sollte klar sein, musst du narürlich auf diene Situation anpassen. Hoffe ich habe dich richtig verstanden, wenn nicht, kannst du ja nochmal mit Erläuterung hier posten.


----------



## DJCanni (7. November 2007)

ich werde es mal ausprobieren...danke aber schonmal für den schnellen Support =)

*UPDATE*
wo lege ich die Seiten fest die in den Popups geldaden werden sollen?

->Erläuterung:
Ich möchte, dass verschiedene, aber bestimmte Seiten in den Popups geladen werden. Diese sollen nur einmal geladen werden und sich dann wieder schließen.
-----
Optimal wäre es, wenn sich die Popups schon nach ca. 5 Sekunden wieder schließen würden...Also sie brauchen nicht ganz fertig geladen zu sein...


----------



## DJCanni (7. November 2007)

soo ich habs soweit mit einer anderen Methode hinbekommen...jetzt müssen die Popups nur noch nach 5sek wieder automatisch zugehen...das bekomm ich einfach nicht hin...
hier mein code:



> <html>
> <head>
> <title>XXX</title>
> </head>
> ...


Irgendwas mit timeout muss glaube ich noch hinter den verschiedenen Links stehen...
Wenn man auf"HIER KLICKEN" klickt sollen sich halt die 4 Popups öffnen und dann nach 5sek wieder schließen...und die letzte Seite soll offen bleiben


----------



## con-f-use (7. November 2007)

Okay du hast also offensichtlich null Ahnung von Javascript. In diesem Fall lies dir bitte dieses Thema aufmerksam und vollständig durch, bevor du das nächste Mal postest. Danke. Außerdem gilt es als unhöflich Leuten PMs zu schreiben und sie zu bitten auf deinen Beitrag zu antworten, wenn du den Beitrag erst vor fünf Minuten geschrieben hast. Das nur so am Rande.

Nun zu deinem Problem. Wie ich schon erwähnt habe, musst damit du die Fenster schließen kannst sie erstmal ansprechen können. Das tust du indem du eine Variable mit einer Referenz auf das Fenster belegst. In deinem Beispiel könnte das so aussehen: 
	
	
	



```
<html>
<head>
<title>XXX</title>

<script type="text/javascript">
// Dieses Array speichert die Referenzen auf die Fenster
var arr = new Array();

// Diese Funktion öffnet die PopUps und ruft nach fünf Sekunde die Funktion zum schließen auf
function openPops() {
   arr[0] = window.open('http://www.xxx.de/aaa','1','width=100,height=100,left=0,top=0');
   arr[1] = window.open('http://www.xxx.de/bbb','2','width=100,height=100,left=0,top=0');
   arr[2] = window.open('http://www.xxx.de/ccc','3','width=100,height=100,left=0,top=0'); 
   arr[3] = window.open('http://www.xxx.de/ddd','4','width=100,height=100,left=0,top=0');
   arr[4] = window.open('http://www.xxx.de/yyy.html');
   window.setTimeout('closeAllPops()',5000);   //5000 Milisekunde sind fünf Sekunden
}

// Funktion zum Schließen
function closeAllPops() {
    for( i=0; i<arr.length; i++ )
        arr[i].close();
    arr = new Array();
}
</script>

</head>
    <body>
	<center><h1><a href="#" onclick="openPops()">>HIER KLICKEN<</a>
	<br>
	Danke für deine Unterstützung!
	</h1></center>
    </body>
</html>
```

Habe das Script schnell runter geschrieben. Könnten noch kleine Fehler drin sein. Wenn dem so ist, dann berichtige die bitte selber. Die Fehlerkonsole deines Browser wird dir dabei helfen. Eigentlich hätte dich schon mein erstes Script auf Ideen bringen können. Etwas mehr selbständigkeit wäre hier wünschenswert.

P.S.
Dein HTML ist grausam.


----------



## DJCanni (7. November 2007)

> Okay du hast also offensichtlich null Ahnung von Javascript. In diesem Fall lies dir bitte dieses Thema aufmerksam und vollständig durch, bevor du das nächste Mal postest.


stimmt...sry mein fehler...



> Außerdem gilt es als unhöflich Leuten PMs zu schreiben und sie zu bitten auf deinen Beitrag zu antworten, wenn du den Beitrag erst vor fünf Minuten geschrieben hast.


sogar der letzte Post war schon über eine Stunde drin...bin da schnellen Support gewohnt...allerdings auch in anderen Branchen...Sry wusste net dass es hier nicht so viele gibt die sich um solche Probleme kümmern...kenn das so, dass ich immer einer der Ahnung hat um so einen wie mich kümmert...da ist es nicht unhöflich ne PM zu schreiben um dem "Lehrer" darauf aufmerksam zu machen, dass man erneut eine frage hat...

Ich hoffe ich packs jetzt xD


MfG

DJCanni


----------



## con-f-use (8. November 2007)

Jo, wenn nicht kannst du auch gerne hier nochmalposten. Ich war nur ein wenig angepisst von dem noch nicht mal zwei Stunden weg und schon ne Nachricht im Postkasten.


----------



## DJCanni (8. November 2007)

Tut es soweit alles ganz gut =)

Vielen Dank con-f-use


MfG

DJCanni


----------



## DJCanni (8. November 2007)

Neue Frage:
Kann ich die Popups *alle* in *einem* Popup öfnnen lassen, welches dann 5sek offen bleibt, damit nicht unten die ganze Taskleiste für 5sek zugemüllt ist?


```
<html>
 <head>
  <title>XXX</title>

  <script type="text/javascript">
   // Dieses Array speichert die Referenzen auf die Fenster
   var arr = new Array();

   // Diese Funktion öffnet die PopUps und ruft nach fünf Sekunde die Funktion zum schließen auf
   function openPops() {
   arr[0] = window.open('about:blank','Popup','width=100,height=100,left=0,top=0');
   window.setTimeout('closeAllPops()',5000);   //5000 Milisekunde sind fünf Sekunden
   }
   // Funktion zum Schließen
   function closeAllPops() {
       for( i=0; i<arr.length; i++ )
           arr[i].close();
       arr = new Array();
   }
  </script>
 </head>
 <body onload="openPops()">
 </body>
</html>
```

das fettgedruckte ist das Popup in dem die anderen Popups alle geöffnet werden sollen...


----------



## DJCanni (12. November 2007)

kommt da noch was?


----------



## con-f-use (12. November 2007)

Thread pushing ist unerwünscht. Wenn du was von mir oder jemand anderem willst, dann schreib dem jeningen bitte eine PM. Wenn du eine Frage in den Raum stellst, dann habe Gedult.

Moralpredigt beendet: Nun zum Thema. Was meinst du genau mit "in einem PopUp öffnen"? Willst du ein neues Fenster haben, in dem sich mehere Tabs öffnen mit den jeweiligen URLs oder willst du, dass die einzelnen URLs nacheinander in ein und dem selben Fenster ohne Tabs geöffnet werden?

Über Tabs hat nämlich javascript keine Kontrolle, die hängen von Borwsereinstellungen und Browsermodell ab. Das nacheinander öffnen lässt sich bewerkstelling. Ich würde allerdigns  vorschlagen, dass du vielleicht mal selber darüber nachdenkst. Mit dem, was du bisher an Code gesehen hast und etwas gesundem Menschenverstand plus probieren sollte das möglich sein.


----------



## DJCanni (14. November 2007)

> Willst du ein neues Fenster haben, in dem sich mehere Tabs öffnen mit den jeweiligen URLs


ja, so wollte ich das gerne haben...
Aber wenn es nich geht, kann man ja nichts machen 
schade


----------



## Shikamy (19. Februar 2011)

con-f-use hat gesagt.:


> Okay du hast also offensichtlich null Ahnung von Javascript. In diesem Fall lies dir bitte dieses Thema aufmerksam und vollständig durch, bevor du das nächste Mal postest. Danke. Außerdem gilt es als unhöflich Leuten PMs zu schreiben und sie zu bitten auf deinen Beitrag zu antworten, wenn du den Beitrag erst vor fünf Minuten geschrieben hast. Das nur so am Rande.
> 
> Nun zu deinem Problem. Wie ich schon erwähnt habe, musst damit du die Fenster schließen kannst sie erstmal ansprechen können. Das tust du indem du eine Variable mit einer Referenz auf das Fenster belegst. In deinem Beispiel könnte das so aussehen:
> 
> ...


 
Hallo,

ich bin neu hier und hab gleich mal eine frage zu diesem Html-code.
Und zwar würde ich es gerne umbauen wollen.
Ich möchte sofern man die seite öffnet das sich die popups nach gewisser zeit automatisch öffnen und sich nach gewisser zeit schließen was ja hier in diesem Bsp. schon geht.
Aber ich möchte auch das sich die Seite von wo die Popups gestartet werden zusätlich als letztes wenn alle popups geschlossen sind auch von selbst schließt.
Ist das möglich?Wenn nicht ist es nicht schlimm hauptsache ich bekomme es so hin das sich ohne klicks die popups öffnen.

Vielen Dank im vorraus

Mfg Shikamy


----------



## con-f-use (19. Februar 2011)

Shikamy hat gesagt.:


> [...] Aber ich möchte auch das [sic] sich die Seite von wo [sic] die Popups gestartet werden zusätlich als letztes wenn alle popups [sic] geschlossen sind auch von selbst schließt.


 Dann bau in der Funktion "closeAllPops()" am Ende noch ein "window.close()" ein.



Shikamy hat gesagt.:


> [...] hauptsache [sic] ich bekomme es so hin das sich ohne klicks [sic] die popups [sic] öffnen.


 Benutze onload im <body>-Tag als Aufrufer für "openPops()". Problem damit:
Viele Browser haben eingebaute PopUp-Filter. Meistens geht es deswegen nicht ohne Klick. Du kannst aber prinzipiell jedes Event (statt jetzt onclick in <a>) als Aufrufer für die "openPops()"-Funktion verwenden und so das umgeben.


----------



## Shikamy (19. Februar 2011)

Danke für die schnelle Antwort...

```
function closeAllPops()
          {
    for( i=0; i<arr.length; i++ )
        arr[i].close();
        window.close();
    arr = new Array();
}
```

hab ich eingbaut nur das Fenster schließt sich nicht !


----------



## con-f-use (19. Februar 2011)

Auch wieder ein Browser-Problem: Skripts dürfen in manchen Browsern (je nach Sicherheitseinstellungen) eine Fenster schließen, die nicht auch durch Skripts geöffnet wurden.


----------



## Shikamy (19. Februar 2011)

OK
habe eben festgestellt im IE kommt eine frage ob das Fenster geschlossen werden soll.
schonmal recht gut ok
Aber bei Mozilla kommt keine Frage oder schließt sich das Fenster.

Weist du zufällig was ich im Browser einstellen müsste?


----------



## Shikamy (19. Februar 2011)

Mal was anderes die seite die ich öffne da steht ja dann Hier klicken.

Ich möchte jetzt aber das da nicht mehr steht (wenn die Popups wieder geschlossen sind) Hier klicken sondern Danke für Ihren Besuch.
Praktisch denke ich das eine neue Seite im gleichem Fenster aufgerufen werden muss...oder?

wie sieht das dann aus als code?


----------



## con-f-use (19. Februar 2011)

Nein, du kannst den Text einzelner Elemente dynamisch verändern. z.B. indem du dem Link eine id gibst: 
	
	
	



```
<a href="#" id="LinkyDerLink" onclick="openPops()">>HIER KLICKEN<</a>
```
und dann per Javascript den Text änderst:

```
function closeAllPops() {
    for( i=0; i<arr.length; i++ )
        arr[i].close();
    arr = new Array();
    document.getElementById('LinkyDerLink').firstChild.data = 'geklickt!';
}
```

P.S.
Achte mal auf Groß-/Klein- und Rechtschreibung. Außerdem ist es villeicht sinnvoller du lernst die Javascript-Basics, anstatt hier Fragen zu stellen. Was du nämlich bisher wissen wolltest steht in jedem brauchbaren JS-Kurs online. Wenn du noch mehr Fragen hast, könnte uns das beiden auf dauer Zeit ersparen...


----------



## Shikamy (19. Februar 2011)

Großes SORRY...werde mich über Javascipt-Basics schlauer machen ok

aber eine Frage habe ich doch noch nur zur schnellen Lösung meiner Frage.

Ich möchte nicht das das hier ein Link ist sondern nur Text anzeigt weil meine seite ist ja nun vollautomatisch und da brauche ich keine Links mehr sondern nur Textanzeige die sich dann auch verändert wenn die Popups geschlossen sind.

zb Herzlich Willkommen !und da nach
Danke für Ihren Besuch !

<a href="#" id="LinkyDerLink" onclick="openPops()">>HIER KLICKEN<</a>


----------



## con-f-use (19. Februar 2011)

Kein Problem, wir alle fangen klein an. Brauchst dich nicht entschuldigen. Wollte es nur erwähnt haben, bevor noch großartig mehr Fragen kommen.

Ersetze dann einfach den Link durch

```
<p id="LinkyDerLink">Willkommen!</p>
```


----------



## Shikamy (19. Februar 2011)

Ich bedanke mich ganz doll bei Ihnen...bin fertig mit meine Page!

Mfg Shikamy


----------

