Lieber _Daniel_,
Das Problem ist, dass Du globale Variablen benutzt. Jedesmal, wenn Du "win" definierst, überschreibst Du damit die vorherige Referenz, die darin abgelegt gewesen war. Das machen wir jetzt besser.
function openPopUp(id)
Soweit OK.
{
id = window.open("http://www.example.org/index.php?id="+id+"/", id, "toolbar=0,location=0,directions=0,status=0,menuebar=0,resizeable=0,scrollbars=1,width=700,height=500,left=100,top=100");
Das ist nicht besonders toll. Du bekommst einen String übermittelt, den Du in der Variablen "id" empfängst. Dann änderst Du die Bedeutung von "id", indem Du nun eine Referenz auf ein Fensterobjekt darin anlegst. Da hättest Du besser gleich "win" dafür genommen:
` var win = window.open("http://www.example.org/index.php?id="+id+"/", id, "toolbar=0,location=0,directions=0,status=0,menuebar=0,resizeable=0,scrollbars=1,width=700,height=500,left=100,top=100");`{:.language-javascript}
Nebenbei bemerkt ist diese Variable eine lokale Variable, die außerhalb der Funktion so nicht erreichbar ist.
> `id.blur();`{:.language-javascript}
Das nennen wir jetzt so:
`win.blur();`{:.language-javascript}
> ~~~javascript
window.setTimeout("win.close()",3000);
> }
Hier benutzt Du wieder eine globale Variable. Da ich oben aber ein "var" vor das "win" geschrieben habe, ist sie nicht mehr global. Darum ändern wir das jetzt so:
window.setTimeout(function () { win.close() }, 3000);
Der Hintergrund ist der, dass im Aufruf von window.setTimeout eine anonyme Funktion definiert wird, die dann gleich als erster Parameter an setTimeout übergeben wird. In dieser Funktion wird eine Variablen "win" benutzt, die zur Zeit der Definition bekannt war. Daher ist sie in dieser Funktion auch bekannt, da diese Funktion ja eine "lokale Funktion" innerhalb Deiner Funktion openPopup ist. Wenn dann setTimeout diese Funktion ausführt, ist die darin enthaltene Variable "win" noch immer mit dem Wert befüllt, den sie bei der Funktionsdefinition hatte.
Das ist zwar etwas krass zu verstehen, aber so funktioniert das in JavaScript.
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)