IFrame
IFrame-komponenten kan brukes til å rendre din egen HTML og CSS i en Altinn-app.
På denne siden
- Hvorfor bruke IFrame-komponenten
- Sikkerhets- og ytelsesbekymringer
- Bekymringer angående tilgjengelighetserklæring
- Grunnleggende implementering av IFrame-komponenten
- Avansert implementering av IFrame-komponenten
- Sandbox-restriksjoner
Hvorfor bruke IFrame-komponenten
Som en tjenesteutvikler kan det være ønskelig å inkludere din egen HTML og CSS i en Altinn-app, for eksempel for å vise eksternt innhold som skal ligne selskapets merkevareprofil som utvikler appen.
Nå er det mulig å oppnå dette ved hjelp av IFrame-komponenten, som gjør det mulig å rendre HTML og CSS i eksisterende Altinn-applikasjoner.
Tips: Det kan være lurt å vurdere om det er strengt tatt nødvendig å bruke denne komponenten eller ikke. Det er ikke optimalt å benytte seg av mange iframe-er i applikasjonen. Det beste er å unngå dem, dersom det er mulig.
Sikkerhets- og ytelsesbekymringer
Det er viktig å merke seg at innholdet i iframe-en vil være fra en annen kilde enn appen selv, og dette kan påvirke ytelsen og potensielt sikkerheten til appen.
Det er derfor avgjørende å sikre at innholdet som lastes inn i iframe-en er pålitelig og sikkert, og at det ikke inneholder skadelig kode eller potensielt farlige tredjepartsressurser som du som tjenesteutvikler ikke har kontroll over.
Bekymringer angående tilgjengelighetserklæring
Grunnleggende implementering av IFrame-komponenten
For å bruke IFrame-komponenten i en Altinn-app, legger du enkelt til IFrame-komponenten i layout-filen din, som vist nedenfor.
{
"id": "unik-komponent-id",
"type": "IFrame",
"textResourceBindings": {
"title": "enkel-overskrift"
}
}
Nå lurer du kanskje på hvordan du kan legge inn HTML og CSS i IFrame-komponenten. Dette kan oppnås ved å legge til ønsket HTML- og CSS-kode i tekstressursfilen din.
{
"id": "enkel-overskrift",
"value": "<html><head><title>Enkel overskrift</title><style>h1 { color: red; }</style></head><body><h1>Min enkle overskrift</h1></html>"
}
Nå, hvis vi besøker appen vår, bør vi kunne se at IFrame-komponenten rendre en rød overskrift med teksten “Min enkle overskrift.”
Avansert implementering av IFrame-komponenten
Noen ganger er det ikke nok å bruke statisk HTML og CSS direkte skrevet inn i tekstressursfilen. Det er situasjoner der du må hente HTML dynamisk basert på visse kriterier eller utføre beregninger. For å hente HTML dynamisk kan du benytte deg av ProcessDataRead. Du kan lese mer om dataprosessering her.
ProcessDataRead og dataprosessering gir muligheten til å forbehandle data før det sendes tilbake til frontend for rendring.
Sandbox-restriksjoner
IFrame-komponenten bruker sandbox-attributten som pålegger sikkerhets-restriksjoner for hvilke muligheter man har innenfor iframen.
Disse restriksjonene kan fjernes individuelt ved å legge til de ønskede egenskapene i sandbox-attributten. Se https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#sandbox.
Fra før av er allow-same-origin
aktivert. Noen av de andre restriksjonene kan fjernes ved å konfigurere sandbox
-egenskapen på IFrame-komponenten.
Dersom du ønsker å tillate å åpne lenker i en ny fane, kan du bruke følgende konfigurasjon:
{
"id": "unik-komponent-id",
"type": "IFrame",
"textResourceBindings": {
"title": "innhold-med-link"
},
"sandbox": {
"allowPopups": true,
"allowPopupsToEscapeSandbox": true
}
}
NB: allowPopupsToEscapeSandbox
fjerner alle sandbox-restriksjoner på den nye siden som åpnes. Uten å sette denne egenskapen vil ikke siden som åpnes kunne kjøre javascript.