Hvorfor frames stinker!

Flere argumenter mod brug af frames på websider. Med skyldig tak til Onkel Jakob for inspiration til titlen.

Frames - opdeling af browservinduet i flere individuelle rammer - fungerer yderst sjældent særligt godt. Nu hvor jeg skal tvinge mig selv til at finde et godt eksempel, er der ingen sider, der dukker op for mit indre øje.

Jeg kan derimod huske rækkevis af dårlige eksempler, hvor frames er brugt uden skelen til de fordele de eventuelt måtte kunne give, men med masser af ulemper som resultat. Desuden kan enhver side, der bruger frames for det meste bygges op med lige så god - og ofte bedre - navigation helt uden brug af frames.

Frames-baserede dokumenter er noget skidt <

  • De opfører sig uforudsigeligt
  • De lader sig kun med besvær indeksere ordentligt i søgemaskinerne
  • Man finder ofte de individuelle dokumenter i søgesystemerne, men ser dem ikke i frames-miljøet
  • Man kan ikke altid genindlæse dem
  • Det er besværligt at printe dem
  • Det er besværligt at lave henvisninger eller bogmærker til dem
Jeg har svært ved at finde nogle argumenter for frames. De fleste kan gennemhulles uden videre. Det eneste virkeligt holdbare argument er, at frames giver mulighed for at fastholde elementer på siden mens man kan navigere i andre. Hvorfor det er en fordel ved jeg ikke, men sidst i teksten tager jeg diskussionen alligevel. Mange af problemerne kan løses med tekniske midler, men det skaber så bare yderligere en kompleksitet, som kan give problemer. Også mere om det senere.

De opfører sig uforudsigeligt <

Ligesom alle andre avancerede muligheder i websidebygning såsom Javascript eller komplekse skemaer, så bidrager frames med endnu et lag, der kan gå mos i. Opsætningen af frame-dokumentet - det såkaldte frameset - stiller store krav til forståelse for skærmens natur, brugernes adfærd og deres mange forskellige computerkonfigurationer.
Den klassiske fejl er at lave frames uden rullebjælker (scrollbars) ved at sætte frame-egenskaben SCROLLING="No". Sådanne sider laves ofte af webdesignere med store skærme. Disse designere ser alt på deres skærm, og det ser nydeligt ud med usynlige overgange mellem de forskellige delrammer. Men har vi som brugere en mindre skærm, eller vælger vi at formindske browservinduet, så er der problemer. Fordi der ikke er nogle af de grimme rullebjælker på skærmen, kan vi ikke navigere til det indhold, der ikke umiddelbart er synligt i browseren. Uanset hvor godt vi prøver kan vi ikke. Det dur ikke med musen, og piletasterne er heller ikke meget bevendt. På den måde er mangen en venstremenu blevet amputeret. Indholdet - det i den centrale frame - kan for det meste ses og navigeres, men resten får vi ikke lov at bevæge os rundt i.
Og det er der god grund til, for hvis vi skal have navigationsmuligheden, så skal webdesigneren tillade at der dukker rullebjælker op efter behov, og så ser det smukke design lige pludselig alt andet end smukt ud.
Et andet uforudsigeligt element er åbningen af nye dokumenter - egne eller andres - som medfører sære former for opførsel. Nye websteder åbner i små vinduer og åbner man links i nye browservinduer forsvinder al navigationshjælp.

De lader sig kun med besvær indeksere <

En side der ikke er i søgemaskinerne er så godt som usynlig, og de mange brugere, der finder interessante sider gennem søgemaskinerne er dybt afhængige af, at henvisningerne herfra fungerer ordentligt. Henvisninger til frames-baserede sider fungerer yderst sjældent ordentligt. Et frame-dokument består almindeligvis mindst af fire separate dokumenter:
  • Et frameset, der beskriver opsætningen af frames-miljøet
  • Et dokument til øverste frame - ofte et logo eller et banner
  • Et dokument til den venstre frame - ofte en menu
  • Et dokument til den centrale frame - oftest indholdet
Det eneste virkeligt interessante er det sidste, nemlig selve indholdet. Alle siderne bliver indekseret af søgemaskinerne, men
  • Framesettet indeholder for det meste ikke noget andet end opsætningen
  • Logoet eller banneret er ofte en grafik, og derfor uinteressant for søgemaskinen
  • Menuen er bare menuen
  • Indholdsdokumentet er det eneste, der rummer brugbare nøgleord
Derfor finder vi det sidste dokument, når vi søger.

Man finder ofte de individuelle dokumenter <

Klikker vi på henvisningen til dokumentet med indhold, ser vi det dokument. Men... vi ser ikke andet, for vi mangler frameset-dokumentet til at skabe miljøet, der bringer logoet frem, så vi ved hvor vi er, og menuen frem, så vi kan navigere videre.
Der findes løsninger på problemet, og flere og flere bruger dem, men de kræver at man programmerer. Det bedste er at fange problemet på serveren og lave et program, hvis logik er således:
  1. Vises dette dokument i frames-miljøet?
  2. Hvis ja, så er alt ok, hvis nej, så gå videre
  3. Hent framesettet med dette dokuments navn som argument
  4. Skab frames-miljøet og indlæs det aktuelle dokument i indholdsvinduet
Fordelen er at miljøet genskabes og at URL'en oven i købet kan henvise direkte til det rette dokument i det rette miljø. Ulempen er at det er unødvendigt besværligt. En kompleks løsning på et problem, der kan fjernes ved simpelthen ikke at bruge frames. Hvorfor bruge ressourcer på at skabe problemet og så siden bruge yderligere ressourcer på at løse det?

Man kan ikke altid genindlæse dem <

Når man har klikket sig frem til et dokument, der vises i et frame-miljø - for eksempel en nyhedsside - og ønsker at genopfriske sidens indhold, støder man ofte på problemer. Browserne ved nemlig ikke hvilket dokument vi ser på i en under-frame. Den ser kun den overordnede URL, og genindlæser den. Det betyder at vi får det hele serveret forfra - fra toppen, og altså igen må klikke os vej frem til det indhold, som vi så på før.

Svar på kommentarer <

Kære alle sammen. Tak for jeres indlæg.

Der er gået nogle år siden jeg skrev den her artikel, og jeg synes stadig at frames stinker. De gør ikke noget, som jeg ikke kan gøre uden - slet ikke nu, hvor CSS (style sheets) tillader stort set fri placering af ethvert element på siden og man kan lave alle de flydende elementer man vil.

Hvad angår genindlæsning af elementer på en webside, så skulle kritikerne måske:
1) lave sider, der var knapt så komplekse
2) lige huske at enhver webbrowser har en cache
3) huske at ikke alle sider er ens i top og menu hver gang de læses ind.

Og hvad udskriften angår: printervenligt format (meget printervenligt og særdeles skalérbart) findes nederst på alle sider, også denne.

Og hvad min opfattelse af min egen vigtighed angår? Jeg fatter ikke kommentaren... Hele dette site er en eksponering af Steven og undertegnede - og i en hvis forstand vores egen opfattelse af vores egen vigtighed. Hvorfor skulle det her være anderledes?

Martin