marc beekhuis: close child-window problem

dies soll kein doppelposting sein. vielmehr ein aufruf an alle profis, damit "struppi" vom alten thread etwas entlastet wird.
hier das problem:

mit folgendem skript versuche ich alle child-windows beim verlassen der parent-seite zu schliessen:
<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

  1. dies soll kein doppelposting sein. vielmehr ein aufruf an alle profis, damit "struppi" vom alten thread etwas entlastet wird.

    hehe ;-)

    'Ich vemute mal das Problem liegt daran:

    top.POP_UP = new Array();

    und daran:

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

    da du ja im Shockwave Plugin bist, ist die Frage, was in dem Moment top ist?
    Du könntest versuchen, stattdessen window.POP_UP zu nehmen, oder einfach nur:

    var POP_UP = new Array()

    und alle 'top.' rausnehmen, das ist ja nur gedacht, damit es auch mit Frames funktioniert.

    Struppi.

    1. jetzt schauts also so aus:

      var 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);
      POP_UP[win.name] = win;
      return POP_UP[win.name];
      }
      function close_all()
      {
      for(var win in POP_UP) if(typeof POP_UP[win].close != 'undefined' && !POP_UP[win].closed) POP_UP[win].close();
      }
      //-->

      passiert aber immer noch das gleiche. [object window]

      das problem muss bei der interpretation des aufrufs aus shockwave liegen. wenn ich die fenster direkt im javascript öffnen lasse, funktioniert alles reibungslos. wie schon erwähnt, kann es auch nicht am shockwave selber liegen, denn das habe ich schon diverse male getestet.könnte das problem bei "POP_UP[win.name] = win;
      return POP_UP[win.name];" liegen???

      greetings marc

      1. so, jetzt hab ichs raus!!!
        ich muss die funktion mit "void" aufrufen, dann funzts.
        "javascript:void(popup('sound.html','sound','width=250,height=100,scrollbars=no,left=0,top=0,screenX=0,screenY=0'))"

        gruss marc