Maler
5XX-side
500 er en feilside som vises når det skjer en teknisk feil som ligger utenfor klienten. Siden er viktig for å informere besøkende om feilen og hvordan de kan komme seg videre.
Varianter
import React, { useEffect } from "react";import { BodyShort, Box, Button, HGrid, Heading, Link, List, Page, VStack,} from "@navikt/ds-react";
function Example() { useDekorator();
return ( <Page footer={<Footer />}> <Header /> <Page.Block as="main" width="xl" gutters> <Box paddingBlock="20 8"> <HGrid columns="minmax(auto,600px)" data-aksel-template="500-v2"> <VStack gap="16"> <VStack gap="12" align="start"> <div> <BodyShort textColor="subtle" size="small"> Statuskode 500 </BodyShort> <Heading level="1" size="large" spacing> Beklager, noe gikk galt. </Heading> {/* Tekster bør tilpasses den aktuelle 500-feilen. Teksten under er for en generisk 500-feil. */} <BodyShort spacing> En teknisk feil på våre servere gjør at siden er utilgjengelig. Dette skyldes ikke noe du gjorde. </BodyShort> <BodyShort>Du kan prøve å</BodyShort> <List> <List.Item> vente noen minutter og{" "} {/* Husk at POST-data går tapt når man reloader med JS. For å unngå dette kan dere fjerne lenken (men beholde teksten) slik at man må bruke nettleserens reload-knapp. */} <Link href="#" onClick={() => location.reload()}> laste siden på nytt </Link> </List.Item> <List.Item> {/* Vurder å sjekke at window.history.length > 1 før dere rendrer dette som en lenke */} <Link href="#" onClick={() => history.back()}> gå tilbake til forrige side </Link> </List.Item> </List> <BodyShort> Hvis problemet vedvarer, kan du{" "} {/* https://nav.no/kontaktoss for eksterne flater */} <Link href="#" target="_blank"> kontakte oss (åpnes i ny fane) </Link> . </BodyShort> </div>
<BodyShort size="small" textColor="subtle"> Feil-id: 12345678-9123-4567-8912-345678912345 </BodyShort>
<Button>Gå til Min side</Button> </VStack>
<div> <Heading level="1" size="large" spacing> Something went wrong </Heading> <BodyShort spacing> This was caused by a technical fault on our servers. Please refresh this page or try again in a few minutes.{" "} </BodyShort> <BodyShort> {/* https://www.nav.no/kontaktoss/en for eksterne flater */} <Link target="_blank" href="#"> Contact us (opens in new tab) </Link>{" "} if the problem persists. </BodyShort> </div> </VStack> </HGrid> </Box> </Page.Block> <Env /> </Page> );}
function Header() { return <div id="decorator-header" />;}
function Footer() { return <div id="decorator-footer" />;}
const MILJO_URL = "https://www.nav.no/dekoratoren";
function Env({ languages }: { languages?: { locale: string; url: string }[] }) { return ( <div id="decorator-env" data-src={`${MILJO_URL}/env?context=privatperson&simple=true${ languages ? `&availableLanguages=[${languages .map((language) => JSON.stringify(language)) .join(",")}]` : "" }`} /> );}
/** * OBS: Dette er ikke anbefalt metode for å laste dekoratør! * Se `nav-dekoratoren`-dokumentasjon for riktig implementasjon * @see https://github.com/navikt/nav-dekoratoren */function useDekorator() { useEffect(() => { const script = document.createElement("script"); script.src = `${MILJO_URL}/client.js`; script.async = true; document.body.appendChild(script);
const styles = document.createElement("link"); styles.href = `${MILJO_URL}/css/client.css`; styles.rel = "stylesheet"; document.head.appendChild(styles);
return () => { document.body.removeChild(script); document.head.removeChild(styles); }; }, []);}
Om malen
Denne malen er designet for å være enkel å implementere og tilpasse etter dine behov. Den inneholder grunnleggende elementer som en tittel, en feilmelding og en liste med forslag til å komme seg videre. Designet er rent og minimalistisk, noe som gjør det lett for brukerne å forstå meldingen.
Unngå tekniske feil
Så langt det er mulig bør man tilrettelegge løsningen sin for at besøkende ikke ender opp på 5XX-sider. De fleste 5XX-koder bør håndteres i bakgrunnen uten at besøkende trenger å forholde seg til dem.
Error Boundaries er en enkel og effektiv måte å sikre "Graceful Degradation" av løsningen din. La deler av løsningen feile i isolasjon uten at det påvirker resten av applikasjonen. Dette sammen med gode testrutiner og monitorering gjør at besøkende forhåpentligvis aldri vil se denne malen i praksis.
Brukes til
I noen tilfeller vil bruker treffe på ikke-håndterte tekniske feil, forårsaket enten i klienten eller på serveren. Da er det viktig å informere besøkende om feilen, gi de et hint om hva som kan ha forårsaket den og hvordan de kan komme seg videre. Det er flere typer tekniske feil og 5XX-koder, men konsekvensen for brukeren er det samme.
I alle disse situasjonene vil 5XX-siden gi brukeren beskjed om at noe har gått galt, og at det ikke er deres feil. Linker og knapper på siden vil veilede dem videre. Ved å bruke malen kan du sikre at selv i møte med feil, vil brukerne ha en ok opplevelse.
Faste deler
Del | Forklaring |
---|---|
Tittel | H1 |
Feilmelding | Standard feilmelding for 5XX, eller teknisk feil |
Liste med løsningsforslag | Standard liste med ting bruker kan gjøre for å komme seg videre |
Valgfrie deler
Del | Forklaring |
---|---|
CTA-knapp | Knappen lenker til et område som brukeren kan navigere til |
Feil-ID | En streng som identifiserer feilen, som kan brukes til feilsøking. Bør reflektere logger. |
Feilmelding på engelsk | Om 500-siden er på engelsk, kan denne teksten fjernes |
Eksempel på bruk
Send oss eksempler på malen brukt i det fri som vi kan lenke til her.
Endringer
Dato | Versjon | Endringer |
---|---|---|
27.11.2023 | 1 | Publiserte varianter for enkel, komplett, feil-id, CTA, uten dekoratøren, og flere språk |
07.12.2023 | 2 | La til lenker på 'laste siden på nytt' og 'gå tilbake til forrige side', samt la til maksbredde. |