Basierend auf Forums-Beiträgen vom 17.08.1998 von:
Stefan Muenz, muenz@csi.com
Christine Kuehnel, kuehnel@screenExa.net
Im folgenden Beispiel wird mit Hilfe von JavaScript ein Verweisziel in einem neuen Fenster geöffnet. Bei Browsern, die kein JavaScript interpretieren, bzw. bei denen JavaScript ausgeschaltet ist, wird das Verweisziel ebenfalls in einem neuen Fenster geöffnet, jedoch nur mit reinem HTML-Code.
In der JavaScript-Variante sind Zusatzangaben wie width="..." und height="..." möglich, in der reinen HTML-Variante dagegen nicht.
<html> <head> <title>JavaScript-Links</title> <script language="JavaScript"> <!-- function targetLink(URL) { if(document.images) targetWin = open(URL,"Neufenster","width=400,height=300"); } //--> </script> </head> <body> <a href="ziel.htm" target="_blank" onClick="targetLink('ziel.htm');return false">Text</a> </body> </html> |
Mit JavaScript wird ein Fenster geöffnet, return false sorgt dafür, dass der Link selbst in diesem Fall nicht ausgeführt wird.
Eine Einschränkung gibt es dabei: Browser, die nur JavaScript 1.0 kennen (Netscape Navigator 2 und MS Internet Explorer 3) können return false nicht interpretieren und führen den Link aus. Sie werden mit if(document.images) ausgeschlossen und zur Kategorie der Browser ohne JavaScript zugeordnet. Diese reagieren nicht auf onClick, öffnen dafür durch target="_blank" ein ganz normales neues Fenster ohne Größenvorgaben.
Ältere Browser, die target="_blank" nicht interpretieren, führen den Link ganz normal aus und öffnen die Zieldatei im selben Fenster.
Basierend auf einem Forums-Beitrag vom 01.08.1998 von:
Stefan Muenz, muenz@csi.com
und auf einem Forums-Beitrag vom 03.08.1998 von
Christoph Lipp, christoph.lipp@gmx.net
Möchten Sie ein separates Browser-Fenster, das ein Frame-Set enthält, öffnen und dabei den Inhalt eines der Frames durch einen Parameter frei wählen, so können Sie dazu im öffnenden Fenster ein verstecktes Formular zur Parameterablage definieren.
<form name="Daten"><input name="varFrame" type=hidden value=""></form>
Die aufrufende Datei enthält dann eine Funktion, die den Parameter im versteckten Formular setzt und das Fenster öffnet.
<html> <head> <title>Aufruf</title> <script language="JavaScript"> <!-- function openWindow(filename) { document.Daten.varFrame.value = filename; NewWindow = window.open('separat.html','NewWindow'); NewWindow.focus(); } //--> </script> </head> <body> <form name="Daten"><input name="varFrame" type=hidden value=""></form> <a href="JavaScript:openWindow('wunsch.htm')">neues Fenster</a> </body> </html> |
Die aufgerufene Datei "separat.html" generiert dabei das Frame-Set per JavaScript. Beim Erzeugen des Frame-Sets wird das versteckte Formularfeld abgefragt und damit die gewünschte Seite aufgerufen.
<html> <head> <title>Frameerzeugung</title> <script language="JavaScript"> <!-- Variable= opener.document.Daten.varFrame.value; document.write("<frameset rows=\"70,*\">"); document.write("<frame src=\"fix.html\" name=\"frame1\">"); document.write("<frame src=\""+Variable+"\"name=\"frame2\">"); document.write("</frameset>"); //--> </script> </head> <body> </body> </html> |
Ein weiterer Ansatz ist die von Christine Kühnel auf http://www.screenexa.net/js_notiz/tips/frame_set.htm vorgestellte Lösung.
Möchten Sie sicherstellen, dass der Link auch in Browser ohne JavaScript angezeigt wird, so lesen Sie hierzu Verweis im neuen Fenster öffnen - mit und ohne JavaScript.
Basierend auf Forums-Beiträgen vom 18.11.1998 von:
BioNauT, danners-outfitter@odn.de
Neue Fenster erzeugt man mit der Methode open() des Objektes Window. Es ist jedoch nicht möglich, ein neues Fenster durch einen direkten Aufruf über einen Link zu erzeugen.
Der Aufruf <a href="javascript:window.open('test.htm','Name','width=200,height=200')">Link</a> öffnet ein neues Fenster. Gleichzeitig führt der Browser jedoch auch den Link aus. Dies führt dazu, dass die aktuelle Seite verlassen wird und eine browserinterne Seite mit der Mitteilung [object] (Internet Explorer) oder [object window] (Netscape) angezeigt wird.
Sie können dieses Problem durch die Verwendung einer Funktion umgehen. Alternativ ist es auch möglich, das Fenster durch Verwendung des Event-Handler onClick zu öffnen.
<script language="JavaScript"> <!-- function Fenster() {window.open("Seite.htm","Name","width=300,height=200")} //--> </script> <a href="Javascript:Fenster()">Link</a> <a href="#" onClick="window.open('Seite.htm','Name','width=300,height=200'); |
Basierend auf Forums-Beiträgen vom 09.01.1999 von:
Roland, rbion@netcologne.de
Stefan Muenz, muenz@csi.com
und vom 10.1.1999 von:
Christine Kuehnel, kuehnel@screenExa.net
Mit der Methode open() des Windowsobjektes können Sie neue Fenster erzeugen. Die Darstellung des Fensters ist jeweils abhängig von den
Parameterangaben und den Browservoreinstellungen.
Ein vollständig neues Browserfenster mit allen Symbolleisten erhalten Sie durch die Angabe der folgenden Parameter:
"width=550,height=500,resizable=1,location=1,status=1,menubar=1,scrollbars=1,toolbar=1,directories=1"
<html> <head> <title>Selektion eines Auswahlmenüs in einem neuen Fenster öffnen</title> <script language="JavaScript"> <!-- function Go(x) { if(x == "nothing") {if (document.images){ document.forms[0].reset(); document.forms[0].elements[0].blur();} return; } else { F = window.open(x,"NeuFenster", "width=550,height=500,resizable=1,location=1,status=1,menubar=1,scrollbars=1,toolbar=1,directories=1"); if (document.images) {setTimeout("F.focus()",40); document.forms[0].reset(); document.forms[0].elements[0].blur();} } } //--> </script> </head> <body> <form> <select size=1 name="Auswahl" onChange= "Go(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)"> <option value="nothing">[ Titel ] <option value="seite1.htm">Seite 1 <option value="seite2.htm">Seite 2 </select></form> </body> </html> |
Im Beispiel wird eine Variante der in SELFHTML vorgestellten Quickbar verwendet. Der Unterschied zu dem dort gezeigten Beispiel besteht darin, dass die ausgewählte Seite in einem neuen Fenster geöffnet wird. Lesen Sie zum Verständnis des Wirkungsprinzips dieses Beispieles den SELFHTML-Abschnitt Verweisliste als Auswahlliste.
Mit der Auswahl einer Seite wird ein neues vollständiges Browserfenster geöffnet. Lesen Sie zur Wirkungsweise der verwendeten Parameter den SELFHTML-Abschnitt
open(). Der Parameter directories bewirkt das Einblenden der persönlichen Linksleiste.
Dieses neue Fenster wird durch setTimeout("F.focus()",40) mit einer leichten Zeitverzögerung aktiviert.
Diese Verzögerung ist notwendig, damit der MS Internet Explorer den Fokus richtig ausführt.
Dieses Beispiel können Sie im Netscape Navigator ab der Version 3 und im MS Internet Explorer ab der Version 4
uneingeschränkt einsetzen. Im MS Internet Explorer Version 3 wird die Aktivierung des neuen Fensters nur bei der
erstmaligen Verwendung ausgeführt.
Verwenden Sie im Parameterstring keine Leerzeichen, da diese Fehler verursachen können.
Ein Fehler im Parameterstring bewirkt, dass nur die Angaben bis zur Fehlerstelle interpretiert werden.
Jede folgende Angabe wird dann von den Browsern ignoriert.
Sie können beim Generieren des Parameterstrings anstatt der 1 auch die Bezeichnung yes
verwenden. Verwenden Sie falls erforderlich alle Parameter und deaktivieren Sie auszuschließende Parameter durch 0
oder no.
Einen Parameterstring nach Wunsch können Sie auf Christine Kühnels Seite
http://screenexa.net/js_notiz/tips/win00.htm generieren lassen.
Basierend auf einem Forums-Beitrag vom 24.03.1999 von:
Leonhard Kronast, Leonhard.Kronast@gmx.de
Das Erzeugen von neuen Fenstern mittels JavaScript erlaubt eine Anpassung der Fenstergröße und deren Aussehen.
Ein einmal geöffnetes Fenster können Sie jedoch nur noch in seiner Position und Größe verändern.
Weitere Parameter lassen sich zwar ändern, indem das geöffnete Fenster geschlossen und ein Neues erzeugt wird. Doch besteht das Problem darin,
dass nicht bekannt ist, ob der Anwender dieses Fenster bereits geschlossen hat. Dies lässt sich durch Verwendung
der Eigenschaft closed des Windowsobjektes abfragen. Nach dem Schließen des Fensters können Sie wiederum ein neues Fenster
mit neuen Parametern öffnen.
<html> <head> <title>Variable Fenster gleichen Fensternamens</title> <script language="JavaScript"> <!-- var zweitfenster=null; function oeffnen(welches,optionen) { if (zweitfenster != null) if (!zweitfenster.closed) zweitfenster.close(); zweitfenster = window.open(welches,"Neufenster",optionen); zweitfenster.focus(); } //--> </script> </head> <body> <a href="javascript:oeffnen('seite1.htm','width=400,height=300,resizable=0,scrollbars=1')">Seite 1</a> <a href="javascript:oeffnen('seite2.htm','width=200,height=300,resizable=1,scrollbars=0')">Seite 2</a> </body> </html> |
Mit dem Einlesen der Datei wird der Variablen zweitfenster der Wert Null zugewiesen. Dieser wird in der Zeile if (zweitfenster != null) abgefragt. Wurde noch kein neues Fenster geöffnet, wird nun eins mit den übergebenen Werten erstellt. Mit dem Öffnen dieses neuen Fensters wird der Variablen zweitfenster ein Wert zugewiesen. Beim erneuten Aufruf der Funktion oeffnen() wird nun geprüft, ob die Eigenschaft zweitfenster.closed falsch ist. Ist dies der Fall bedeutet es, dass das Fenster noch geöffnet ist. Die Funktion schließt dieses dann und öffnet wiederum ein neues Fenster mit neuen Parametern. Ist die Eigenschaft zweitfenster.closed wahr, wird das neue Fenster sofort geöffnet.
Dieses Beispiel können Sie uneingeschränkt im MS Internet Explorer und dem Netscape Navigator ab der Version 4 verwenden. Für den Netscape Navigator 3.0 benötigen Sie ein Workaround, da dieser nach dem Schließen des Fensters die Ausführung der Funktion abbricht. Dazu erzeugen Sie 2 getrennte Funktionen und rufen die Funktion oeffnen() mit einer kleinen Zeitverzögerung vor der Funktion schliessen() auf.
<html><head><title>Existenz eines geöffneten Fensters überprüfen</title> <script language="JavaScript"> <!--Workaround Netscape Navigator 3.0 -- var zweitfenster=null; function schliessen() { if (zweitfenster != null) {if (!zweitfenster.closed)zweitfenster.close();} } function oeffnen(welches,optionen) { zweitfenster = window.open(welches, "",optionen); zweitfenster.focus(); } //--> </script> </head> <body> <a href="javascript:setTimeout('oeffnen(\'seite1.htm\',\'width=400,height=300\')',200);schliessen();">Seite 1</a> <a href="javascript:setTimeout('oeffnen(\'seite2.htm\',\'width=200,height=300\')',200);schliessen();">Seite 2</a> </body></html> |
Basierend auf einem Forums-Beitrag vom 24.05.1999 von
Heiko Budras, Heiko.Budras@frankfurt.netsurf.de
und auf einem Forums-Beitrag vom 05.06.1999 von:
Stefan Muenz, muenz@compuserve.com
Mit der Methode open() des Windows-Objektes können Sie neue Fenster öffnen. Oft ist es jedoch erforderlich,
im öffnenden Fenster Aktionen auszuführen.
Zum Ansprechen des öffnenden Fensters (Mutterfensters) ist das reservierte Wort opener notwendig. Lesen
Sie dazu auch den SELFHTML-Abschnitt window: Allgemeines zur Verwendung.
opener.location.href='datei2.htm'; opener.parent.Framename.location.href='datei.htm'; opener.Funktionsname(); opener.Variablenname="Inhalt"; opener.focus(); opener.close(); |
Vor dem jeweiligen Aufruf wird das reservierte Wort opener gesetzt. Die beiden ersten Beispiele
laden jeweils eine neue Datei ins öffnende Fenster bzw. in ein Framefenster.
Die folgenden Beispiele rufen im Mutterfenster eine Funktion auf bzw. ändern einen Variableninhalt.
Mit opener.focus() wird das Mutterfenster in den Vordergrund geholt und mit opener.close() geschlossen.
Sie können ein Mutterfenster nur dann ohne Nachfrage des Browsers schließen, wenn dieses ebenfalls von einer Webseite geöffnet wurde und noch keine eigene History besitzt. In allen anderen Fällen erfolgt die Nachfrage, ob das Fenster geschlossen werden soll.
Diese Frage ist nicht zu umgehen, da dies zum internen Sicherheitsmodell der Browser gehört. Der Besucher selbst hat das Recht zu entscheiden, ob er sein Fenster geschlossen haben möchte oder nicht.
Basierend auf einem Forums-Beitrag vom 26.05.1999 von:
Stefan Muenz, muenz@compuserve.com
Ein Browserfenster wird in den Hintergrund gesetzt, wenn es inaktiv wird. Dieses Verhalten ist
insbesondere bei Fernsteuerungen unpraktikabel, da diese erst bei einer ständigen Sichtbarkeit sinnvoll wird.
Ein Fenster wird mit der Methode focus()
in den Vordergrund geholt. Durch die wiederholte Anwendung dieser Methode können Sie ein Zusatzfenster ständig im Vordergrund halten.
<html> <head> <title>Fenster im Vordergrund</title> <script language="JavaScript"> <!-- function immervorn() { self.focus(); window.setTimeout("immervorn()",1000); } //--> </script> <body onload="immervorn()"> ... </body> </html> |
Beim Laden der Datei wird die Funktion immervorn() mittels
des Event-Handlers onLoad
aufgerufen. Diese Funktion setzt mit self.focus() das Fenster in den Vordergrund und ruft sich
nach einer Sekunde mittels setTimeout()
erneut auf.
Notieren Sie diese Funktion im Kopf der Datei, die im Zusatzfenster geladen wird.
Der Internet Explorer kennt erst ab der Version 4 die Methode focus().
Das verwendete Verfahren belastet die Systemressourcen des Rechners Ihres Besuchers stark.
Durch den ständigen Wechsel des aktiven Fensters wird z.B. ein Ausfüllen von Formularen nahezu unmöglich.
Setzen Sie diese Methode deshalb sparsam und zielgerichtet ein.
weiter: | Navigationssteuerung bei Frames |
zurück: | Event-Handler |
SELFHTML Forums-Auslese JavaScript |
© 2000 das Redaktionsteam