Avatar billede clevzter Nybegynder
02. oktober 2003 - 23:25 Der er 14 kommentarer og
1 løsning

Syntax for frameset i frameset

Hej.

Jeg har et frameset der ser nogenlunde således ud:
<frameset>
    <frame name="default" src="...>
</frameset>
I framen default kører så dette frameset:
<frameset name="galleri" rows="*,0" onload="galleri.rows = '0,*';">
    <frame name="frame1" src="...>
    <frame name="frame2" src="...>
</frameset>

Jeg har altså brugt denne funktion:
onload="galleri.rows = '0,*';"
til at rykke rundt på framestørrelserne. Den følger ikke rigtig nogen syntax, men virker sådan set i IE.

Nu vil jeg bare gerne ha syntaxen korrekt, så den også virker i Netscape.

Hvordan skal det se ud?
Avatar billede roenving Novice
02. oktober 2003 - 23:40 #1
For det første må du godt:

<frameset>
  <frameset name="galleri" rows="*,0" onload="galleri.rows = '0,*';">
    <frame name="frame1" src="...>
    <frame name="frame2" src="...>
  </frameset>
</frameset>

-- men hvorfor to inde i hinanden ?-)

-- og så burde det vel være iorden at skrive this.rows ...

(et name uden angivet tilhørsforhold virker i IE, fordi IE har en property som hedder document.all, som man gerne må udelade !-)
Avatar billede clevzter Nybegynder
02. oktober 2003 - 23:45 #2
Jatak, jeg ved godt at man kan skrive frameset inde i et frameset. Men her der kører filen default.php inde i framesettet med kun én frame. Og der er links til andre sider som åbnes i denne frame.
Ét af linksene er så til en side som indeholder et frameset.
Derfor fås den situation, som jeg er i nu.

Hvad gør jeg?
Avatar billede clevzter Nybegynder
02. oktober 2003 - 23:46 #3
Jeg ville jo mene at parent.rows ville være i orden, men det mener min browser ikke.
Avatar billede roenving Novice
02. oktober 2003 - 23:51 #4
Jamen er det da ikke det frameset du har gang i, som skal ændres ?-)
Avatar billede roenving Novice
02. oktober 2003 - 23:53 #5
Efter min reference er det helt iorden at bruge:

this.rows

!-)
Avatar billede clevzter Nybegynder
02. oktober 2003 - 23:56 #6
Det ER da netop et frameset. "rows" er den attribut, som skal ændres. Og den henviser mit frameSET.
"this" henviser jo bare til selve framen (default).
Avatar billede clevzter Nybegynder
02. oktober 2003 - 23:57 #7
...okay, måske henviser "this" til framesettet. Hmm..
Men ligemeget hvad, så virker det ikke. Hverken i IE eller NS.
Avatar billede clevzter Nybegynder
02. oktober 2003 - 23:58 #8
Læste lige lidt forkert i det du havde skrevet.
Min fejl!
Avatar billede clevzter Nybegynder
03. oktober 2003 - 00:04 #9
Men this.rows virker ikke af den grund.
Ved at kalde til framesettets navn kan jeg få det til at virke i IE, men ike NS.
Andre der kan den syntax?
Avatar billede roenving Novice
03. oktober 2003 - 00:04 #10
Lidt nærmere læsning siger, at Danny Goodman (The JavaScript Bible) anbefaler at man bruger præcise angivelser, selv om jeg ikke kan finde den fjerneste grund til det i dette tilfælde (det er jo netop sig selv, som skal ændres, hvilket egentlig også er noget vrøvl !-)
Avatar billede roenving Novice
03. oktober 2003 - 00:06 #11
Hvorfor ikke:
  <frameset name="galleri" rows="0,*">

-- evt.

  <frameset name="galleri" id="galleri" rows="*,0" onload="top.document.getElementById('galleri').rows = '0,*';">
Avatar billede clevzter Nybegynder
03. oktober 2003 - 00:32 #12
>> roedvin(g)

Det du skriver dér virker jo upåklageligt i ét fremeset. Fint.
Idéen var så at det skulle virke inde i endnu et frameset. Og det gør det ikke.

Så får man fejlen om at top.document.getElementById(...) ikke er et objekt. Og det er jo egentlig rigtigt nok. Der skal ikke stå "top", men hvad så?
Avatar billede clevzter Nybegynder
03. oktober 2003 - 00:34 #13
Har lavet et lille test-miljø, som bedre kan give en idé om hvad det er jeg vil.
http://clevzter.dk/test.html inderholder et frameset, som bruger den funktion roedving skrev og virker fint
http://clevzter.dk/set.html indeholder et frameset, som viser test-html i en frame. Præcis som det skal køre i "virkeligheden". Og som I kan se, virker det ikke her.
Avatar billede olebole Juniormester
11. oktober 2003 - 06:00 #14
<ole>

Muligheden for at ændre et frameset dynamisk, er en proprietær IE-ting. Det virker ikke i andre browsere.
Derudover hedder det:
  parent.document.all["FRAME_ID"].cols = "0, *";
(du kan roligt bruge document.all, da det kun er IE, der forstår det).

/mvh
</bole>
Avatar billede clevzter Nybegynder
16. oktober 2003 - 19:43 #15
>> Ole
Tak for det. Rart at vide at det rent faktisk er umuligt i stedet for at få en masse idéer (men tak til dem også!).

>> alle interesserede
Jeg har løst mit problem ved at gøre det liiiidt anderledes. Det går ud på det samme. At "swappe" frames i et set.

<frameset rows="*,0" onload="synlig.location=usynlig.location.href;">

Og så har jeg bare to frames. Gær selv hvad de hedder.... :)
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