Forenindex » Programmierung/Entwicklung » JavaScript » fenster schliessen

fenster schliessen

Anonym
Beiträge gesamt: 22827

21. Sep 2003, 23:43
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
 function windowClose()
{
soundOpen.close()
textOpen.close()
picturesOpen.close()
motionpicturesOpen.close()
objectsOpen.close()
contactOpen.close()
layoutOpen.close();
}
...tja, soviele fenster können auf meiner seite geöffnet werden. mit obenstehender funktion möchte ich sie aber alle auf einmal beim schliessen der parent-seite wieder verschwinden lassen. das funktioniert zwar, aber nur wenn auch wirklich alle fenster geöffnet wurden. wenn zum beispiel nur das fenster "objects" geöffnet wird, schliesst es sich nicht beim schliessen der parentseite...

any ideas???
greetings dasschaf

fenster schliessen

exquisitus
Beiträge gesamt: 247

22. Sep 2003, 00:09
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
hallo

versuch mal:

function windowClose()
{
if (soundOpen && !soundOpen.closed) soundOpen.close();
if (textOpen && !textOpen.closed) textOpen.close();
if (picturesOpen && !picturesOpen.closed) picturesOpen.close();
...
}


bezüglich automatischem setzen von semikolons würd ich mich nicht auf den js-interpreter verlassen.

hth
gruss
Steven


fenster schliessen

Anonym
Beiträge gesamt: 22827

22. Sep 2003, 10:39
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
hallo steven
habs ausprobiert. doch keine besserung. wenn das fenster sound vorher geschlossen wird, dann werden die anderen einfach übersprungen....(?)
ich teste auf einem mac mit IE5. vielleicht woanders kein problem?

greetings marc

fenster schliessen

Anonym
Beiträge gesamt: 22827

23. Sep 2003, 01:05
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
hallo
hier das problem noch etwas genauer:


function windowClose()
{
if (soundOpen && !soundOpen.closed) soundOpen.close();
if (textOpen && !textOpen.closed) textOpen.close();
if (picturesOpen && !picturesOpen.closed) picturesOpen.close();
...
}

dies funktioniert solange alle erwähnten fenster geöffnet oder auch wieder geschlossen wurden. nun kann es aber auch passieren, dass z.b das fenster "sound" gar nicht erst geöffnet wurde. in diesem fall führt das in obigem javascript zu einem abbruch und die restlichen fenster bleiben offen...
else..
wer helfen kann...
gruss marc

fenster schliessen

Markus Walker
Beiträge gesamt: 494

23. Sep 2003, 22:49
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
Um eine Variable zu «erforschen», wo nicht bekannt ist ob diese überhaupt existiert, muss der Operator typeof() benutzt werden.
Also z.B.

if (typeof(soundOpen) != undefined && !soundOpen.closed) soundOpen.close();

Wenn soundOpen nicht existiert (undefined ist), wird der Rest der if-Abfrage nicht mehr ausgeführt.

siehe auch http://selfhtml.teamone.de/...peratoren.htm#typeof

fenster schliessen

exquisitus
Beiträge gesamt: 247

24. Sep 2003, 11:33
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
@marc

bin gar nicht auf die idee gekommen dass die variablen nicht definiert sein könnten. sorry für etwaige verwirrung.

IMHO erleichtert es das programmierer-leben wenn man am anfang eines programmes alle variablen definiert und auch initialisiert. insbesondere in js.

cheers
Steven

fenster schliessen

Anonym
Beiträge gesamt: 22827

25. Sep 2003, 14:31
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
hallo
ich habe das ganze nun so aufgebaut:

<script type="text/javascript"><!--
top.POP_UP = new Array();
window.onunload = close_all;
function popup(url, name, param)
{
if(!param) param = "";
if(!name) name = 'X' + Math.random();
var win = window.open(url, name, param);
top.POP_UP[win.name] = win;
return top.POP_UP[win.name];
}
function close_all()
{
for(var win in top.POP_UP) if(typeof top.POP_UP[win].close != 'undefined' && !top.POP_UP[win].closed) top.POP_UP[win].close();
}
//-->
</script>

der aufruf der funktion erfolgt aus shockwave:
"javascript:popup('sound.html','sound','300,400')"

im ie5 auf mac funktioniert alles tadellos aber alle anderen browser öffnen die child-fenster nur kurz, sie werden gleich wieder geschlossen und im parent erscheint der text "[object window], in der titelleiste wird die funktion "javascript:popup('sound.html','sound')" angezeigt.
was mache ich falsch?
gruss marc

fenster schliessen

Markus Walker
Beiträge gesamt: 494

25. Sep 2003, 16:38
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
Ja, die Verwendung des Pseudoprotokolls «javascript:» hat so seine Tücken. Da es eben ein Pseudoprotokoll ist, ist seine Implementierung nicht einheitlich, noch weniger als andere normierte Feature...
Z.B. Opera5 öffnete immer ein neues Fenster, wenn dieses Pseudoprotokoll benutzt wurde.

Zum Problem: Offenbar wird der Seiteninhalt des Parent-Window entfernt, wodurch der onunload-Event getriggert wird. Ohne es getestet zu haben, vermute ich, dass die Location durch die Verwendung des Pseudoprotokolls «javascript:» überschrieben wurde. Um das zu verhindern, kann der «void()» Operator benutzt werden, z.B.:
javascript:void("popup('sound.html','sound','300,400')")

siehe hierzu: http://selfhtml.teamone.de/.../operatoren.htm#void

Es bleibt natürlich immer noch die Unsicherheit durch die Verwendung des Pseudoprotokolls «javascript:». Dies wird sich nur durch entsprechende Änderung der Architektur der gesammten Seite vermeiden lassen.

fenster schliessen

Anonym
Beiträge gesamt: 22827

25. Sep 2003, 19:40
Bewertung:

gelesen: 2695

Beitrag als Lesezeichen
tausenddank. jetzt läufts wenigstens auf den gängigen browsern.

gruss marc