Avatar billede Jim Rasmussen Novice
21. marts 2011 - 20:28 Der er 7 kommentarer og
1 løsning

Funktion i javascript

function fillImage(elm) {
            window.opener.fillMce(elm);
            window.close();
        }

Den ovnfornævnte funktion skal kun køre hvis funktionen som den henviser til eksistere. Ellers fejler den i IE. hvordan finder jeg ud af om en funktion i opner dokumentet eksistere?
Avatar billede olebole Juniormester
21. marts 2011 - 20:41 #1
<ole>


function fillImage(elm) {
        if (!window.opener.fillMce) return;
            window.opener.fillMce(elm);
            window.close();
}



/mvh
</bole>
Avatar billede Jim Rasmussen Novice
21. marts 2011 - 22:01 #2
Den virker lige så godt som min egen. Altså den virker fint når siden med funktionen bliver åbnet fra dokumentet der indeholder funktionen 'fillMce()'

Men! hvis jeg køre siden selvstendigt og dermed ikke får brug for funktionen, så smider IE denne error: i hovedet på en

'Error: 'window.opener.fillMce' is null or not an object'
Avatar billede olebole Juniormester
21. marts 2011 - 22:10 #3
Ahhhh ... så er det jo ikke variablen - men vinduet, du vil spørge på  *o)

if (!window.opener) return;
Avatar billede olebole Juniormester
21. marts 2011 - 22:11 #4
- og det oprindelige script fejler nu ikke kun i IE. Det fejler i alle browsere  =)
Avatar billede Jim Rasmussen Novice
22. marts 2011 - 21:48 #5
Mange tak for det. (:

Kan du ikke lige sende et svar så :p
Avatar billede olebole Juniormester
22. marts 2011 - 23:54 #6
Ellers tak, jeg samler ikke længere points  =)

For lige at præcisere mit svar, så refererer opener i en popup til window objektet, hvorfra popup'en blev åbnet. Ligger dokumentet ikke i en JS-popup, er opener ikke defineret/sat.

Hvis opener er undefined, sker der ikke noget ved at spørge på den. Den er blot undefined.

Spørger vi derimod på opener.en_property, leder vi efter property'en en_property, som ligger på opener objektet. Vi forudsætter med andre ord, at opener eksisterer - eller sådan må JS i hvertfald opfatte vores forespørgsel.

Derfor udløses en fejl, hvis opener ikke eksisterer, og vi spørger på opener.en_property. Eksisterer opener, udløses ikke en fejl.

Du kan spørge mig, om jeg kender Poul Otto. Du vil få et svar: "Ja" eller "Nej".

Hvis jeg kender Poul Otto, og du spørger mig, om han er rødhåret, får du et svar: "Ja" eller "Nej".

Hvis jeg ikke kender Poul Otto, og du spørger mig, om han er rødhåret, får du en fejl: "Jamen, jeg kender ham jo ikke!".

Håber, det forklarer årsagen til fejlen  =)
Avatar billede olebole Juniormester
23. marts 2011 - 00:01 #7
Lidt OT: Folk spørger ofte, hvad der nu skulle være så smart ved OOP (Objekt Orienteret Programmering). Nu kender du svaret: "Det skyldes Poul Otto"  :D

Når først, man for alvor opdager, at OOP er en afspejling af vores 'everyday' virkelighedsopfattelse, bliver programmering så dejlig transparent og selvforklarende  *o)
Avatar billede Jim Rasmussen Novice
07. maj 2011 - 14:25 #8
sv:
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester