Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
1
2
3
4
5
6
7
8
9
10
| function openForm()
{
formulier=window.open("formulier.html", "formulier","");
window.formulier.onunload = closeform;
}
function closeform()
{
alert('bla');
} |
de pagina die wordt opgeroepen staat dus opzelfde domein...
[ Voor 26% gewijzigd door deviltje op 04-09-2003 09:41 ]
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
[ Voor 89% gewijzigd door deviltje op 04-09-2003 09:41 ]
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
1
2
3
4
5
6
7
8
9
10
| function openForm() { var popup = window.open("formulier.html", "formulier",""); popup.onunload = function() { if (opener && opener.closeform) opener.closeform(); } } function closeform() { alert('bla'); } |
(voor de duidelijkheid de variabele en het window object even andere namen gegeven, en een check ingebouwd of de opener nog wel bestaat op het moment van sluiten)
[ Voor 16% gewijzigd door crisp op 04-09-2003 09:48 ]
Intentionally left blank
Jouw code dus crisp
[ Voor 157% gewijzigd door Bosmonster op 04-09-2003 09:58 ]
Helaas geeft dit ook geen resultaten...crisp schreef op 04 September 2003 @ 09:47:
De functie die je attached aan je popup wordt natuurlijk uitgevoerd vanuit de scope van het popup window; je wilt echter een functie in je opener uitvoeren. Probeer het volgende eens:
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| var popup; function openForm() { popup = window.open('formulier.html', 'formulier', ''); setTimeout('attachOnunload()', 100); } function attachOnunload() { popup.onunload = closeform; } function closeform() { alert('bla'); } |
IE geeft echter geen krimp, wat mij duidelijk een bug lijkt. Dan zit er dus niets anders op dan in formulier.html zelf een onunload functie te zetten die checked of er een opener is en dan closeform in de opener aanroept.
Intentionally left blank
Die time-out deed de truc..crisp schreef op 04 september 2003 @ 10:24:
zelf ook even getest; blijkbaar wordt de attached functie toch in de scope van de opener uitgevoerd, dit werkt in Mozilla (met een kleine timeout tussen openen van de popup en het toevoegen van de event handler aan het window object):
Ik had nog een addEvent functie liggen
1
2
3
4
5
6
7
8
9
| function addEvent(el, evname, func) { if ( document.addEventListener ) el.addEventListener(evname, func, true); else if ( document.attachEvent ) el.attachEvent("on" + evname, func); else eval( "el.on"+ evname +"="+func+";" ); }; |
aanroep:
addEvent( popup, "unload", closeform );
en deze in combinatie met de time-out werkt goed in IE en mozilla ( op windows ) .. nog even de rest testen..
[ Voor 5% gewijzigd door deviltje op 04-09-2003 10:40 ]
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
Intentionally left blank