HTML & CSS for nybegynnere

HTML & CSS for nybegynnere (Del 24): iFrames

Alle videoer i opplæringen HTML & CSS for nybegynnere

iFrames har vært en del av HTML-standarden lenge. Men i HTML 4.0 ble de pakket sammen med de nå utdaterte rammene inn i rammesett-HTML-varianten. Rammene blir ikke lenger vurdert i HTML5, men de innebygde rammene (iFrames) blir det.

Med iFrames kan andre nettsider bli integrert. Nettleseren gjengir dermed en annen HTML-fil innenfor gjeldende nettside. Innholdet i iFrame-vinduet kan formateres individuelt.

Når vi snakker om iFrames, må sikkerheten ved denne HTML-teknikken selvfølgelig vurderes på nytt. Et problem her er skadelig kode som kan bli infiltrert i nettsider via iFrames uten å bli oppdaget. Dette er selvfølgelig en stor ulempe.

I HTML5 har det imidlertid blitt innført passende sikkerhetsmekanismer for å unngå disse problemene. Mer om dette vil bli diskutert senere i dette opplæringsprogrammet. Før man bruker iFrames, bør man likevel huske at de potensielt utgjør en sikkerhetstrussel, spesielt fordi de nye sikkerhetsattributtene ennå ikke støttes av alle nettlesere.

I HTML5 er iFrames en del av den faste standarden og bringer med seg noen ekstra attributter her. Det følgende eksempelet viser hvordan iFrames kan defineres.

<iframe src="http://www.psd-tutorials.de/" 
   width="420" 
   height="350">
   <a href="http://www.psd-tutorials.de/">PSD-Tutorials.de</a>
</iframe>

Resultatet i nettleseren ser slik ut:

HTML & CSS for nybegynnere (Del 24): iFrames

Det iframe-elementet får tildelt attributtet src. Dette src inneholder som verdi siden som skal vises. Det kan være en lokal fil eller som i det viste eksempelet, en ekstern ressurs som blir kalt opp.

Bredden og høyden til iFrames bestemmes gjennom attributtene width og height. Hvis innholdet som er inkludert er større enn størrelsen som ble angitt for iFrame, vil rullefeltene vises.

HTML & CSS for nybegynnere (Del 24): iFrames

Mellom åpnings- og lukke-tags for <iframe> kan vilkårlig innhold defineres. Dette innholdet vil kun være synlig i nettlesere som ikke kjenner til iframe-elementet.

HTML5 introduserer en rekke nye attributter knyttet til iFrames, hovedsakelig relatert til såkalt Sandbox-atferd.

Nettleserne har samme opprinnelsespolicy som sørger for at en inkludert nettside ikke kan manipuleres under visningen. Denne sikkerhetsfunksjonen er absolutt fornuftig, men ikke alltid ideell. Derfor ble sandbox-attributtet introdusert i HTML5, som gir nettleserne beskjed om hvilke tillatelser som skal gis til innholdet som er inkludert fra en ekstern side i en iFrame.

<iframe 
   sandbox="allow-forms" 
   src="getusercontent.cgi?id=12193">
</iframe>



iFrames som er utstyrt med attributtet sandbox har ikke tilgang til DOM-en til den inkluderte nettsiden. I tillegg kan de ikke utføre skripter eller lagre informasjonskapsler. Disse begrensningene kan oppheves ved hjelp av ulike Sandbox-verdier.

Forskjellige verdier kan tildeles til sandbox-attributtet. Ved hjelp av allow-forms kan den inkluderte nettsiden samle inn informasjon fra brukerne via skjemaer. Brukere vil ikke være klar over at skjemaet ikke kommer fra gjeldende side.

Hvis man derimot angir allow-same-origin, vil den inkluderte nettsiden behandles som om den kommer fra samme vert. Dette opphever Same Origin Policy.

Verdien allow-top-navigation tillater den inkluderte nettsiden å endre innholdet til det øverste nettlesingskonteksten.

Og så har vi allow-script. Dette tillater at JavaScript kan være inkludert på den inkluderte nettsiden, som kan manipulere den innebyggende siden.

Her er et eksempel på hvordan en tilsvarende sandbox-instruksjon kunne se ut:

<iframe 
   sandbox="allow-same-origin"
   src="http://www.psd-tutorials.de/">
</iframe>

Det er også mulig å tildele flere verdier. Disse skal da skilles med mellomrom. Her er et eksempel på det:

<iframe 
   sandbox="allow-same-origin allow-forms allow-scripts"
   src="http://www.psd-tutorials.de/">
</iframe>



iFrames er vanligvis designet for å integrere eksterne innhold, men de kan alternativt også inkludere dem.

<iframe 
   src="http://www.psd-tutorials.de/" 
   width="200" height="150" 
   seamless>
</iframe>



Dette attributtet har noen interessante egenskaper. For eksempel vil målrettet i det inkluderte dokumentet bli vist i nettleservinduet der iframe-elementet er definert, med mindre noe annet er spesifisert. (Ved vanlig inkludering vil målrettene iFrame-vinduet bli vist).

seamless støttes for øyeblikket bare av Google Canary, altså utviklerutgaven av denne nettleseren.

En annen effekt berører stilarkene. Stilarkene til den inkluderende filen gjelder også for den inkluderte dokumentet. (Ved vanlig inkludering gjelder ikke stilarkene).

Et annet attributt har blitt lagt til. Med srcdoc kan du definere innholdet som skal inkluderes direkte. Se på følgende eksempel:

<iframe sandbox="allow-same-origin allow-forms allow-scripts" 
seamless="seamless" srcdoc=" 
   <script>
      top.location.href=" http://www.psd-tutorials.de/"
   </script>">
</iframe>

I dette tilfellet mangler src-attributtet, som vanligvis angir den filen som skal inkluderes.

HTML & CSS for nybegynnere (Del 24): iFrames



Innholdet angitt via srcdoc behandles som om det kommer fra en ekstern server. Det er dermed underlagt Same Origin Policy i sin helhet. Dette atferden er interessant spesielt i forbindelse med skriptdefinisjoner. Enhver HTML- og JavaScript-kode er tillatt der. Imidlertid må anførselstegn og ampersand-tegnet representert med de navngitte tegnene &quot; og &amp;.

Forresten kan du også direkte definere en side her og dermed vise ønsket innhold.

<iframe sandbox="allow-same-origin allow-forms allow-scripts" 
seamless="seamless" srcdoc="
   <!DOCTYPE html>
<html>
<head>
<title>PSD-Tutorials.de</title>
</head>

<body>
 <p>…</p>
</body>
</html>">
</iframe>



Dette trenger ikke nødvendigvis å være en komplett HTML-fil. Noe slikt her er selvfølgelig også mulig:

<iframe sandbox="allow-same-origin allow-forms allow-scripts" 
seamless="seamless" srcdoc="<p>PSD-Tutorials.de</p>">
</iframe>



For nettleseren vil det se ut som følger:

HTML & CSS for nybegynnere (Del 24): iFrames



Dette er helt vanlig HTML-syntaks, uten skripter osv.

Noen flere notater om attributtene som til nå har blitt brukt for visuell utforming: Ting som scrolling, marginwidth og marginheight er ikke lenger tillatt i HTLM5. Disse attributtene blir erstattet med CSS.