Avatar billede javanewbie Nybegynder
22. april 2004 - 12:19 Der er 14 kommentarer og
1 løsning

JavaScript i frames - howto

Hvis jeg skal have javascript i frames til at fungere... Hvordan bærer jeg mig så ad?

Eksempel.

Jeg har en overordnet side. MAINDOC

Under den har jeg en IFRAME jeg kalder INDHOLD

I den IFRAME jeg har to frames. Den ene kalder jeg for UPPER og den anden for LOWER.

Hvis en javascript funktion i UPPER skal sætte et input tekstfelt i LOWER til at være 'Hallo' , hvad skal jeg så skrive?
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:20 #1
For en ordens skyld. Tekstfeltet hedder TEKSTTEST  :-)
Avatar billede roenving Novice
22. april 2004 - 12:26 #2
parent.LOWER.TEKSTTEST.value = 'Hallo';
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:28 #3
Ok. Hvad så hvis jeg finder det fordelagtigt, at prikke mig hele vejen ind fra topniveauet?
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:28 #4
Og smid i øvrigt et svar. :-)
Avatar billede roenving Novice
22. april 2004 - 12:32 #5
top.INDHOLD.LOWER.TEKSTTEST.value = 'Hallo';

-- velbekomme '-)
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:43 #6
Hmmm. Det virker i MSIE men ikke i Mozilla?
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:43 #7
Altså dit første eksempel.
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:47 #8
Jeg har lavet denne knap i min uppper:

<input type="button" name="knap" id="knap" value="click me" onclick="parent.lower.test.value='test';">

Og den virker som sagt fint i MSIE, men ikke i Mozilla. Kan du give et bud på problemet?
Avatar billede javanewbie Nybegynder
22. april 2004 - 12:48 #9
Det samme gælder dit andet forslag. :-(
Avatar billede roenving Novice
22. april 2004 - 12:51 #10
Hov ,-(

Jeg har da glemt document ...

parent.LOWER.document.FORMNAVN.TEKSTTEST.value

top.INDHOLD.LOWER.document.FORMNAVN.TEKSTTEST.value = 'Hallo';
Avatar billede roenving Novice
22. april 2004 - 13:14 #11
-- og jeg takker for points ;~}
Avatar billede javanewbie Nybegynder
22. april 2004 - 13:19 #12
Nu bliver jeg lidt nysgerrig.... (håber det er ok?)

Når man i lower er nødt til at angive document, hvorfor er det ikke tilfældet i top, for her skal vi jo også ind i dokumentet for at finde vores iframe...

Jeg har set i andre eksempler, at der gøres brug af .all , og at der andre gange ikke gøres brug af .all
Hvorfor / hvorfor ikke?

Jeg smider gerne flere point for besvarelse.
Avatar billede roenving Novice
22. april 2004 - 13:50 #13
1. Alle (i)frames i en side er direkte properties på sidens window-objekt (og på frames-arrayet !-)
Almindelige html-elementer (som ikke er window-objekter) er indirekte properties til sidens document-objekt (nogle er dog direkte properties, f.eks. forms, som også kan hentes fra forms-arrayet !-)

Ifølge den officielle ECMA-script-binding (ECMA er en europæisk standard-organisation, som vedligeholder javascript-standarden) kan man få fat i form-elementer via formen, eller man kan finde dem via forskellige getElement(s)-metoder, hvor getElementById og getElementsByTagName er de umiddelbart anbefalede.

2. M$ har til den Jscript-version, som er indbygget i IE udviklet deres helt egen element-binding, selvom de altså har godkendt noget andet i w3c-organer.
Den tager udgangspunkt i at alle elementer er direkte properties til document-objektet via .all-arrayet, som indekseres via id ...
Ovenikøbet er det lovligt at udelade document.all, så du vil også se løsninger, hvor det bare er et elements id, som direkte danner udgangspunkt for en adressering ...

Eksempel:

<body>
<div id="minDiv">
<form name="minForm" id="minFormId">
<input type="text" name="minInput" id="minInputId">
</form>
</div>
</body>

Alle js-browsere (NS2+ og IE3+) kan finde inputtet med:

document.minForm.minInput, document.forms['minForm'].minInput og document.forms[0].minInput samt document.minForm.elements[0]

IE4+ kan også finde den med:
minInputId og document.all['minInputId'] <-- sågar også med de principielt ukorrekte () ...

NS6+, IE5+ og alle andre browsere kan finde det med
document.getElementById('minInputId')

Og så er der varianterne med tal-indekseringer, som findes for næsten alle typer:

document.all[3]
document.getElementsByTagName('input')[0]

-- og historien er som du måske lige kan fornemme, faktisk ikke afsluttet med det, så det har allermest at gøre med, hvilken situation, man skal have fat i en ting i !o]
Avatar billede javanewbie Nybegynder
22. april 2004 - 13:55 #14
Ok. Hvad så med selectbox, for den er (vistnok?) et windowed element. Kan den så tilgås både via document og fra top?

Skal jeg oprette et spørgsmål med point?
Avatar billede roenving Novice
22. april 2004 - 14:10 #15
Nej, en select er 'bare' et almindeligt form-element, som dog i Windows hentes fra styresystemet, og derfor har de egenskaber, som gør det nødvendigt at betegnede dem som windowed elements, men det er ikke at forveksle med window-objekter, for f.eks. en iframe er til og med IE5 også et windowed element, men ikke senere, og hele tiden er det et window-objekt !-)
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging