PopUp-Fenster aus Flash Seite 2

Thema:
|
PopUp-Fenster aus Flash
|
Beschreibung:
|
neues Browserfenster öffnen mit definierten Eigenschaften
|
Keywords:
|
Flash, PopUp, pop up, Fenster, Browser, Browserfenster, JavaScript, toolbar, menubar, location, status, resizable, scrollbars, fullscreen
|
Autor:
|
Michi Bundscherer
www.typolis.de
|
Datum:
|
04.04.2000
|
Doc-ID:
|
42-002
|
URL:
|
www.flashworker.de/tutorial/42/002.html
|
Version:
|
1.0
|
Änderungen:
|
noch keine
|
Anforderungen:
|
Flash 3
|
Vorkenntnisse:
|
nützlich aber nicht zwingend sind Flash und HTML Grundkenntnisse
|
Download:
|
n/a
|
|
So funktioniert es: keine Angst vor JavaScript

Im Prinzip funktioniert das so, wie ich es am Anfang geschrieben habe: mit der getURL-Aktion. Nur rufen wir hier jetzt keine einfache HTML-Seite auf, sondern ein JavaScript. Die Funktion, die dann ausgeführt werden soll wird dann noch in der HTML-Seite definiert. Beachte: wenn wir jetzt JavaScript verwenden muss dies auch beim Benutzer aktiviert sein, damit das Fenster aufgeht!
Das kommt in die HTML-Seite:
<HEAD>
<TITLE>Hier steht Dein Seiten-Titel</TITLE>
<!-- Flash-Fenster-Popper v1.0 - www.flashworker.de -->
<SCRIPT LANGUAGE="JavaScript"> var version = 1.0;</SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.1"> version = 1.1;</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
var newwin;
function flashworker_popup(url,name,eigenschaften)
{
newwin = window.open(url,name,eigenschaften);
if(version > 1.0)
{
setTimeout('newwin.focus();',200);
}
}
</SCRIPT>
</HEAD>
<BODY>
Hier kommt der Inhalt der Seite hin (also der HTML-Text oder das SWF).
</BODY>
</HTML>
Erklärung:
Zunächst einmal wird abgefragt, ob JavaScript Version 1.0 oder 1.1 aktiv ist. Dann kommt die Funktion, die zum Öffnen des Fensters zuständig ist. Wenn JavaScript 1.1 vorhanden ist, wird das neu geöffnete Fenster nach 0,2 Sekunden fokusiert, um sicher zu gehen, dass das neue Fenster nicht von anderen Browserfenstern verdeckt wird.
das kommt (z.B.) ins Flash auf eine getURL-Aktion:
javascript:flashworker_popup('url.htm','Fenster-Name',
'toolbar=0,menubar=0,location=0,status=1,scrollbars=0,resizable=1,
width=525,height=380')
Erklärung:
Hier wird also nicht eine HTML-Seite aufgerufen, sondern unsere JavaScript-Funktion, die in der HTML-Seite eingebettet ist. In der Klammer stehen dann die ganzen Zusätze wie die URL, der JavaScript-Name des Fensters und dessen Eigenschaften. Wenn man übrigens irgendwelche Eigenschaften nicht definiert (z.B. wenn ich hier scrollbars=0 weglasse), dann wird die Standardeinstellung des Browsers verwendet.



Das war alles?

Ja, eigentlich schon. Bedenken sollte man vielleicht noch, dass der »Netscape Navigator« und der »Internet Explorer« die definierte Breite und Höhe des PopUp-Fensters (width und height) wieder unterschiedlich interpretieren. IE meint, Breite ist alles innerhalb des Fensters, Netscape hingegen nimmt als Breite die Breite des ganzen Fensters. Netscape macht also die eigentliche Breite (und Höhe) der HTML-Seite immer einige Pixel kleiner. Um einen Wert für die Breite und Höhe des Inhalts des Fensters anzugeben, kann man ab NN4 statt dessen die Parameter »innerwidth« und »innerhight« verwenden. Natürlich wird das dann von älteren Netscape-Browsern oder gar vom Internet Explorer nicht verstanden, was also auch keine Hilfe ist. Im Zweifelsfall sollte der Inhalt also immer in den Netscape-Browser passen!
Wenn es mit bestimmten Browser noch Probleme gibt, weiter unten habe ich noch einen Lösungsvorschlag.
Hey, jetzt haben wir gerade ein Fenster geöffnet, wie kann man es wieder schließen? Das geht ziemlich simpel wieder mit einem JavaSchript, der ebenfalls auf eine getURL-Aktion gesetzt wird:
Das kommt in den Flash-Film als Aktion auf einen Button bzw. auf ein Frame (getURL):
javascript:self.close()



Noch eine Lösung

Man kann es natürlich noch viel umständlicher machen. Und zwar dann, wenn das Pop-Up-Fenster auch auf allen Browsern funktionieren soll. Die eben beschriebene Lösung funktioniert nämlich nicht mit dem Internet Explorer 3.0 auf dem PC und IE 4.5 auf dem Mac. Aber es gibt eine Lösung, wie es auch auf diesen Browsern klappt (diese Lösung wird allerdings wiederum vom IE 3 auf dem Mac nicht unterstützt):
Zuerst erstellst Du ein Frameset, bei dem das erste Frame (mit dem SWF-Film) die Höhe »100%« besitzt und das zweite die Höhe »*«. Das zweite Frame ist für den Benutzer also nicht sichtbar. Wir geben ihm damit wir es später ansprechen können noch einen Namen, z.B. »PopUp«.
Beim Aufruf des Framesets befindet sich im zweiten Frame einfach eine »leere« HTML-Datei. Jetzt braucht man für jedes Pop-Up-Fenster noch eine extra HTML-Datei, die dieses Fenster mit einem »OnLoad«-Befehl im »Body«-Tag aufruft.
Und das war es dann schon! Das Ganze könnte dann beispielsweise so ausschauen:
Das Frameset:
<HTML>
<HEAD>
<TITLE>Meine tolle Flash-Seite</TITLE>
<FRAMESET rows="100%,*" border="0">
<FRAME src="filmurl.htm" name="Film" frameborder="0" noresize>
<FRAME src="PopUpLeer.htm" name="PopUp" frameborder="0" noresize>
</FRAMESET>
</HEAD>
</HTML>
Die HTML-Datei, die im zweiten Frame aufgerufen wird:
<HEAD>
<TITLE>PopUp-Fenster-1</TITLE>
<!-- HTML-Fenster-Popper v1.0 - www.flashworker.de -->
<SCRIPT LANGUAGE="JavaScript"> var version = 1.0;</SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.1"> version = 1.1;</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
var newwin;
function flashworker_popup(url,name,eigenschaften)
{
newwin = window.open(url,name,eigenschaften);
if(version > 1.0)
{
setTimeout('newwin.focus();',200);
}
}
</SCRIPT>
</HEAD>
<BODY onLoad="flashworker_popup('url.htm','Fenster-Name',
'toolbar=0,menubar=0,location=0,status=1,scrollbars=0,resizable=1,
width=525,height=380')">
</BODY>
</HTML>
Der Aufruf aus der Flash-Datei:
Get URL ("PopUp-Fenster-1.htm", window="PopUp")
Weitere Infos zu PopUp-Fenster aus Flash gibt es auch unter [www.moock.org/webdesign/flash] (englisch).


