Attributen
Dit element bevat de globale attributen.
|
Specificeert een Permissions Policy voor de Zie iframes in het onderwerp Opmerking
Een Permissions Policy die via het | |
|
Ingesteld op Opmerking
Dit attribuut wordt beschouwd als een legacy-attribuut en is opnieuw gedefinieerd als | |
|
Ingesteld op Opmerking
Dit attribuut wordt beschouwd als een legacy-attribuut en is opnieuw gedefinieerd als |
| Een booleaans attribuut dat, indien aanwezig, aangeeft dat de geselecteerde topics voor de huidige gebruiker moeten worden meegestuurd met het verzoek voor de bron van de <iframe>. |
| Ingesteld op true om de <iframe> credentialless te maken, wat betekent dat de inhoud ervan wordt geladen in een nieuwe, tijdelijke context. Deze heeft geen toegang tot het netwerk, de cookies en de opslagdata die aan de origin ervan gekoppeld zijn. Er wordt een nieuwe context gebruikt die lokaal is voor de levensduur van het topniveau-document. Als tegenprestatie kunnen de inbeddingsregels van Cross-Origin-Embedder-Policy (COEP) worden opgeheven, zodat documenten met COEP ingesteld documenten van derden kunnen insluiten die dit niet hebben ingesteld. Zie IFrame credentialless voor meer details. |
| Een Content Security Policy die wordt gehandhaafd voor de ingebedde bron. Zie HTMLIFrameElement.csp voor details. |
De hoogte van het frame in CSS-pixels. Standaard is 150. | |
Geeft aan wanneer de browser de iframe moet laden:
| |
Een aanwijsbare naam voor de ingebedde browsing context. Deze kan worden gebruikt in het target-attribuut van de elementen <a>, <form> of <base>; het formtarget-attribuut van de elementen <input> of <button>; of de parameter windowName in de methode window.open(). Daarnaast wordt de naam een eigenschap van de objecten Window en Document, die een verwijzing bevat naar het ingebedde venster of het element zelf. | |
| Bevat een tekenreeksrepresentatie van een optie-object dat een private state token-bewerking vertegenwoordigt; dit object heeft dezelfde structuur als de eigenschap privateToken van het RequestInit-dictionary-type. IFrames die dit attribuut bevatten, kunnen bewerkingen initiëren zoals het uitgeven of inwisselen van tokens wanneer hun ingebedde inhoud wordt geladen. |
Geeft aan welke referrer moet worden verzonden bij het ophalen van de bron van het frame:
| |
|
Bepaalt de beperkingen die worden toegepast op de inhoud die in de
Opmerking
Opmerking
Bij het omleiden van de gebruiker, het openen van een pop-upvenster, of het openen van een nieuw tabblad vanuit een ingebedde pagina binnen een | |
|
De URL van de pagina die moet worden ingebed. Gebruik de waarde Opmerking
De pagina | |
|
Inline HTML om in te bedden, dit overschrijft het Opmerking
De pagina | |
De breedte van het frame in CSS-pixels. Standaard is 300. |
Afgekeurde attributen
Deze attributen zijn afgekeurd en worden mogelijk niet meer door alle user agents ondersteund. Je zou ze niet moeten gebruiken in nieuwe inhoud, en zou moeten proberen ze uit bestaande inhoud te verwijderen.
align Verouderd | De uitlijning van dit element ten opzichte van de omringende context. |
|---|---|
frameborder Verouderd | De waarde 1 (de standaardwaarde) tekent een rand rond dit frame. De waarde 0 verwijdert de rand rond dit frame, maar je zou in plaats daarvan de CSS-eigenschap border moeten gebruiken om <iframe>-randen te bepalen. |
longdesc Verouderd | Een URL van een lange beschrijving van de inhoud van het frame. Vanwege wijdverspreid misbruik is dit niet nuttig voor non-visuele browsers. |
marginheight Verouderd | De hoeveelheid ruimte in pixels tussen de inhoud van het frame en de boven- en onderranden ervan. |
marginwidth Verouderd | De hoeveelheid ruimte in pixels tussen de inhoud van het frame en de linker- en rechterranden ervan. |
scrolling Verouderd | Geeft aan wanneer de browser een scrollbalk voor het frame moet bieden:
|
Scripting
Inline frames worden, net als <frame>-elementen, opgenomen in de pseudo-array window.frames.
Met het DOM-object HTMLIFrameElement kunnen scripts toegang krijgen tot het window-object van de geframede bron via de eigenschap contentWindow. De eigenschap contentDocument verwijst naar het document binnen de <iframe>, hetzelfde als contentWindow.document.
Vanuit de binnenkant van een frame kan een script een verwijzing naar zijn ouder-venster verkrijgen met window.parent.
Scripttoegang tot de inhoud van een frame is onderworpen aan het same-origin policy.
Scripts hebben geen toegang tot de meeste eigenschappen in andere window-objecten als het script vanuit een andere origin is geladen, inclusief scripts binnen een frame die toegang proberen te krijgen tot de ouder van het frame.
Cross-origin-communicatie kan worden bereikt met Window.postMessage().
Top-navigatie in cross-origin-frames
Scripts die worden uitgevoerd in een frame met dezelfde origin kunnen toegang krijgen tot de eigenschap Window.top en window.top.location instellen om de pagina op het hoogste niveau om te leiden naar een nieuwe locatie.
Dit gedrag wordt "top-navigatie" genoemd.
Een cross-origin-frame mag de pagina op het hoogste niveau alleen omleiden met top als het frame sticky activation heeft.
Als top-navigatie wordt geblokkeerd, kunnen browsers ofwel om toestemming van de gebruiker vragen om om te leiden, ofwel de fout in de ontwikkelaarsconsole rapporteren (of beide).
Deze beperking door browsers wordt framebusting intervention genoemd.
Dit betekent dat een cross-origin-frame de pagina op het hoogste niveau niet onmiddellijk kan omleiden — de gebruiker moet eerder al met het frame hebben geïnteracteerd of toestemming voor omleiding hebben verleend.
Een gesandboxed frame blokkeert alle top-navigatie, tenzij de waarden van het sandbox-attribuut zijn ingesteld op allow-top-navigation of allow-top-navigation-by-user-activation.
Merk op dat top-navigatierechten worden overgeërfd, zodat een geneste frame alleen een top-navigatie kan uitvoeren als zijn ouderframes dit ook mogen.
Positionering en schaling
Omdat het een vervangen element is, laat de <iframe> toe dat de positie van het ingebedde document binnen zijn box wordt aangepast met de eigenschap object-position.
De eigenschap object-fit heeft geen effect op <iframe>-elementen.
Gedrag van de gebeurtenissen error en load
De gebeurtenissen error en load die op <iframe>'s worden geactiveerd, zouden kunnen worden gebruikt om de URL-ruimte van de HTTP-servers van het lokale netwerk te onderzoeken. Daarom activeren user agents als beveiligingsmaatregel de error-gebeurtenis niet op <iframe>'s, en wordt de load-gebeurtenis altijd geactiveerd, zelfs als het laden van de inhoud van de <iframe> mislukt.
Responsieve afmeting van <iframe>
Om veiligheids- en privacyredenen tonen <iframe>-elementen standaard geen informatie aan het ouderdocument over de afmetingen van de inhoud in het document dat ze insluiten.
Om responsieve afmeting van <iframe>-elementen op basis van hun inhoud mogelijk te maken, kan de tag <meta name="responsive-embedded-sizing"> worden opgenomen in een ingebed document om dit document te laten deelnemen aan het delen van zijn afmetingsinformatie met het ouderdocument. De CSS-eigenschap frame-sizing kan vervolgens op de <iframe> worden ingesteld, zodat deze dezelfde horizontale of verticale afmeting aanneemt als de werkelijke inhoudsgrootte van het ingebedde document. Dit zorgt ervoor dat de inhoud van de <iframe> naadloos past binnen de insluiter, waarbij onnodige scrollbalken worden vermeden.
Om de <iframe> dynamisch aan te passen naarmate het ingebedde document van layoutgrootte verandert, kun je de methode Window.requestResize() aanroepen vanuit het ingebedde document om een bijgewerkte grootte te rapporteren.
Toegankelijkheid
Mensen die navigeren met hulptechnologie zoals een schermlezer kunnen het title-attribuut op een <iframe> gebruiken om de inhoud ervan te labelen. De waarde van de titel moet de ingebedde inhoud beknopt beschrijven:
<iframe
title="Wikipedia page for Avocados"
src="https://en.wikipedia.org/wiki/Avocado"></iframe>Zonder deze titel moeten ze naar de <iframe> navigeren om te bepalen wat de ingebedde inhoud is. Deze contextverschuiving kan verwarrend en tijdrovend zijn, vooral bij pagina's met meerdere <iframe>'s en/of als embeds interactieve inhoud bevatten zoals video of audio.
Voorbeelden
Een eenvoudige <iframe>
Dit voorbeeld bedt de pagina op https://example.org in een iframe in. Dit is een veelvoorkomend gebruiksscenario van iframes: het insluiten van inhoud van een andere site. Zo zijn bijvoorbeeld het live-voorbeeld zelf en het probeer het-voorbeeld bovenaan beide <iframe>-embeds van inhoud van een andere andere site.
HTML
<iframe
src="https://example.org"
title="iframe Example 1"
width="400"
height="300">
</iframe>Resultaat
Broncode insluiten in een <iframe>
Dit voorbeeld geeft broncode rechtstreeks weer in een iframe. Dit kan worden gebruikt als techniek om scriptinjectie te voorkomen bij het weergeven van door gebruikers gegenereerde inhoud, in combinatie met het sandbox-attribuut.
Merk op dat bij gebruik van srcdoc alle relatieve URL's in de ingebedde inhoud worden opgelost ten opzichte van de URL van de insluitende pagina. Als je ankerlinks wilt gebruiken die naar plekken in de ingebedde inhoud verwijzen, moet je expliciet about:srcdoc als basis-URL opgeven.
HTML
<article>
<footer>Nine minutes ago, <i>jc</i> wrote:</footer>
<iframe
sandbox
srcdoc="<p>There are two ways to use the <code>iframe</code> element:</p>
<ol>
<li><a href="about:srcdoc#embed_another">To embed content from another page</a></li>
<li><a href="about:srcdoc#embed_user">To embed user-generated content</a></li>
</ol>
<h2 id="embed_another">Embedding content from another page</h2>
<p>Use the <code>src</code> attribute to specify the URL of the page to embed:</p>
<pre><code>&lt;iframe src="https://example.org"&gt;&lt;/iframe&gt;</code></pre>
<h2 id="embed_user">Embedding user-generated content</h2>
<p>Use the <code>srcdoc</code> attribute to specify the content to embed. This post is already an example!</p>
"
width="500"
height="250"
></iframe>
</article>Zo schrijf je escape-sequenties bij gebruik van srcdoc:
- Schrijf eerst de HTML uit, waarbij je alles escapet wat je normaal ook in een gewoon HTML-document zou escapen (zoals
<,>,&, enz.). <en<vertegenwoordigen exact hetzelfde teken binnen hetsrcdoc-attribuut. Om er in het HTML-document dus een echte escape-sequentie van te maken, vervang je alle ampersands (&) door&. Zo wordt<bijvoorbeeld&lt;, en wordt&&amp;.- Vervang alle dubbele aanhalingstekens (
") door"om te voorkomen dat hetsrcdoc-attribuut voortijdig wordt afgesloten (als je in plaats daarvan'gebruikt, moet je'vervangen door'). Deze stap gebeurt na de vorige, zodat de"die in deze stap wordt gegenereerd niet&quot;wordt.
Resultaat
Technische samenvatting
| Inhoudscategorieën | Flow content, phrasing content, embedded content, interactive content, palpable content. |
|---|---|
| Toegestane inhoud | Geen. |
| Weglaten van tags | Niet toegestaan, zowel de begin- als de eindtags zijn verplicht. |
| Toegestane oudertags | Elk element dat embedded content toestaat. |
| Impliciete ARIA-rol | Geen overeenkomstige rol |
| Toegestane ARIA-rollen |
application, document,
img, none,
presentation
|
| DOM-interface | HTMLIFrameElement |