Avatar billede lequet Nybegynder
16. november 2002 - 05:17 Der er 20 kommentarer og
1 løsning

Ændre variabel fra iframe

Hey :) Jeg sidder med en side, hvor jeg har en iframe. I den iframe vil jeg gerne ændre en variabel i "hoved-dokumentet"

Jeg troede jeg kunne klare det med parent.variablen = "noget"

Men det virker ikke. Nogen der ved noget om den slags?
Avatar billede limemedia Nybegynder
16. november 2002 - 06:33 #1
Prøv noget ala
parent.opener.formname.formfield.value='fra iframe';

det magiske ord er her "parent.opener" Dog utestet
Avatar billede Slettet bruger
16. november 2002 - 07:10 #2
top.location.reload();

Bruger jeg selv til at genload "hoveddokumentet" fra en iframe!

top.forms.formnavn.variabelvilskifte.value = newvalue;

Skulle kunne klare det for dig (også)!
Avatar billede Slettet bruger
16. november 2002 - 07:18 #3
NB: Ovenstående går kun hvis "hoveddokumentet" ikke er representeret i en anden frame! Den skal være toppen i frame heirakiet!
Avatar billede lequet Nybegynder
16. november 2002 - 16:33 #4
Er ked af at sige det, men det virker ikke :(

Ved ikke lige hvor i fik den ide fra at det er et formfelt :) Det er en ganske almindelig variabel jeg skal have ændret inde fra iframen

Koden i "hoveddokumentet" ser sådan her ud

var changed = 0 ;

Og i iframen ville jeg så gerne gøre noget ala dette

<body onkeyup="parent.changed = 1 ;">
Avatar billede Slettet bruger
16. november 2002 - 16:37 #5
tricky!
et workaround kunne være <input type=hidden name=changed value=0>
Avatar billede Slettet bruger
16. november 2002 - 16:43 #6
Ligger de to filer på det samme domæne? For hvis de gør, burde dit script virke.
Avatar billede lequet Nybegynder
16. november 2002 - 16:54 #7
phoenixv > Jep, de ligger på samme domæne.
Avatar billede lequet Nybegynder
16. november 2002 - 17:01 #8
Ved ikke om fejlen kan ligge et andet sted. Det eneste sted det ellers kunne ligge er i denne kode, men synes ikke jeg kan se nogen fejl der

if ( changed == 0 ) {
    frames.editor.document.body.innerHTML = "" ;
    frames.editor.document.body.focus() ;
    changed = 0 ;
} else {
    if ( !confirm("Save changes to document?") ) {
        frames.editor.document.body.innerHTML = "" ;
        frames.editor.document.body.focus() ;
        changed = 0 ;
    } else {
        savedoc() ;
    }
}
Avatar billede Slettet bruger
16. november 2002 - 17:02 #9
Er changed en global variabel?

P.S. Smid et link.
Avatar billede lequet Nybegynder
16. november 2002 - 17:06 #10
http://www.lequet.com/test/

En global variabel? Ikke sikker, men du kan jo selv se efter. Jeg kan ændre den fra et popup vindue, så det må jo være muligt fra en iframe :)
Avatar billede Slettet bruger
16. november 2002 - 17:10 #11
Jo, changed er global (modsat lokal, dvs. forbeholdt én funktion)...

Hvad er fejlen egentlig?
Avatar billede Slettet bruger
16. november 2002 - 17:11 #12
OK, jeg kan godt se fejlen... Prøv at alerte changed ved klik på "ny".
Avatar billede lequet Nybegynder
16. november 2002 - 17:12 #13
OK, var ikke lige sikker der :)

Fejlen er : Hvis du trykker på "New file" ikonet sletter den teksten i feltet som den skal. Men meningen er at hvis teksten har været ændret siden sidste save, skal den spørge først. Det vil sige at hvis du skriver noget, og trykker "New file" skal den spørge dig først, det gør den ikke
Avatar billede lequet Nybegynder
16. november 2002 - 17:12 #14
OK, 2 sek.
Avatar billede lequet Nybegynder
16. november 2002 - 17:13 #15
Den sige 0 uanset hvad
Avatar billede Slettet bruger
16. november 2002 - 17:18 #16
Jeg er lige kommet i tanke om, at du ikke kan registrere tryk på keyboardet, når dokumentet er sat til designMode.
Men du kan jo lave et før-efter check. Når der trykkes på "ny"-ikonet aflæser du iframens innerHTML. Hvis den er i udgangspositionen, skal dokumentet ikke gemmes. Ellers skal det.
Avatar billede lequet Nybegynder
16. november 2002 - 17:21 #17
Ahh der kan man bare se :) Prøver lige at rode med det
Avatar billede Slettet bruger
16. november 2002 - 17:22 #18
Men så er det selvfølgelig også vigtigt, at du aflæser innerHTML'et, når iframen loades. Gem det i en variabel og sammenlign så, når der trykkes på new file.
Avatar billede lequet Nybegynder
16. november 2002 - 17:25 #19
Jep, det må være løsningen :) Tak for hjælpen, smider du et svar?
Avatar billede lequet Nybegynder
16. november 2002 - 17:33 #20
Sådan, fik det til at virke :)
Avatar billede Slettet bruger
16. november 2002 - 19:20 #21
Svar
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

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