hilfdirselbst.ch
Facebook Twitter gamper-media
"Funktioniert nicht" ist keine hinreichende Fehlerbeschreibung.
Anonym
Beiträge: 22827
21. Sep 2003, 23:43
Beitrag #1 von 9
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


 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 Top
 
X
exquisitus
Beiträge: 247
22. Sep 2003, 00:09
Beitrag #2 von 9
Beitrag ID: #51625
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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


als Antwort auf: [#51623] Top
 
Anonym
Beiträge: 22827
22. Sep 2003, 10:39
Beitrag #3 von 9
Beitrag ID: #51646
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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
als Antwort auf: [#51623] Top
 
Anonym
Beiträge: 22827
23. Sep 2003, 01:05
Beitrag #4 von 9
Beitrag ID: #51759
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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
als Antwort auf: [#51623] Top
 
Markus Walker  M 
Beiträge: 494
23. Sep 2003, 22:49
Beitrag #5 von 9
Beitrag ID: #51912
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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
als Antwort auf: [#51623] Top
 
exquisitus
Beiträge: 247
24. Sep 2003, 11:33
Beitrag #6 von 9
Beitrag ID: #52001
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


@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
als Antwort auf: [#51623] Top
 
Anonym
Beiträge: 22827
25. Sep 2003, 14:31
Beitrag #7 von 9
Beitrag ID: #52264
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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
als Antwort auf: [#51623] Top
 
Markus Walker  M 
Beiträge: 494
25. Sep 2003, 16:38
Beitrag #8 von 9
Beitrag ID: #52302
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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.
als Antwort auf: [#51623] Top
 
Anonym
Beiträge: 22827
25. Sep 2003, 19:40
Beitrag #9 von 9
Beitrag ID: #52339
Bewertung:
(1327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

fenster schliessen


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

gruss marc
als Antwort auf: [#51623] Top
 
X