Ottimizzare gli iframe: caricamento differito, accessibilità e prestazioni

by Anastasia P.
SHARE
Ottimizzare gli iframe: caricamento differito, accessibilità e prestazioni
© Guida-HTML5.it

Introduzione

Un iframe permette di visualizzare una pagina HTML o una risorsa esterna all’interno del documento corrente. È utile per integrare strumenti come moduli, dashboard, calendari, pagine di assistenza o componenti forniti da un servizio esterno. Tuttavia, ogni iframe crea un contesto di navigazione separato e può richiedere il caricamento di HTML, CSS, JavaScript, immagini e font aggiuntivi.

Se una pagina contiene molti contenuti incorporati, il tempo di caricamento può aumentare e l’esperienza dell’utente può peggiorare. Per questo è importante configurare correttamente l’iframe, fornendo almeno un titolo accessibile, dimensioni iniziali coerenti e un caricamento differito quando il contenuto non è immediatamente visibile.

In questo tutorial vedremo come utilizzare l’attributo loading="lazy", come evitare spostamenti improvvisi del layout e come offrire un collegamento alternativo nel caso in cui il contenuto incorporato non sia disponibile.

Codice completo

<section aria-labelledby="dashboard-title">
  <h2 id="dashboard-title">Dashboard delle vendite</h2>

  <p>
    Il grafico interattivo viene caricato quando si avvicina all´area visibile.
  </p>

  <div class="embed-frame">
    <iframe
      src="https://example.com/dashboard"
      title="Dashboard interattiva delle vendite mensili"
      loading="lazy"
      width="800"
      height="500"
      referrerpolicy="strict-origin-when-cross-origin">

      <p>
        Il browser non riesce a visualizzare la dashboard incorporata.
        <a href="https://example.com/dashboard" target="_blank" rel="noopener">
          Apri la dashboard in una nuova scheda
        </a>.
      </p>
    </iframe>
  </div>
</section>

Spiegazione

Caricamento differito con loading="lazy"

L’attributo loading="lazy" indica al browser che l’iframe può essere caricato quando si trova vicino alla finestra visibile. In questo modo le risorse iniziali della pagina vengono privilegiate e il contenuto incorporato viene richiesto solo quando è ragionevole che l’utente possa visualizzarlo.

Questa tecnica è particolarmente utile per iframe posizionati molto in basso nella pagina, ad esempio una dashboard sotto numerosi paragrafi, un calendario nella pagina dei contatti o un widget secondario nella pagina di supporto. Non è invece consigliabile applicare il caricamento differito a un iframe che rappresenta il contenuto principale mostrato immediatamente all’apertura della pagina.

Il ruolo dell’attributo title

L’attributo title descrive lo scopo dell’iframe. Gli utenti che utilizzano tecnologie assistive possono incontrare più frame nella stessa pagina; un titolo preciso permette di distinguere rapidamente il contenuto di ciascuno.

Un testo come title="iframe" è poco utile. È preferibile indicare il contenuto e la sua funzione, per esempio title="Modulo per richiedere assistenza tecnica" oppure title="Calendario degli eventi aziendali".

Dimensioni iniziali e stabilità del layout

Gli attributi width e height comunicano al browser le dimensioni previste dell’iframe prima che la risorsa venga caricata. Riservare lo spazio in anticipo riduce il rischio di layout shift, cioè lo spostamento improvviso degli elementi quando il contenuto incorporato diventa disponibile.

È importante scegliere un’altezza realistica. Un valore troppo piccolo può introdurre barre di scorrimento interne, mentre un valore eccessivo lascia una grande area vuota su schermi piccoli. Se il layout del progetto utilizza regole CSS proprie, è possibile mantenere questi attributi come dimensioni di riferimento e adattare poi l’elemento al contenitore.

Pagina alternativa e accessibilità

Il contenuto inserito tra il tag di apertura e quello di chiusura dell’iframe rappresenta un fallback. I browser moderni normalmente visualizzano il documento indicato da src, ma il testo alternativo rimane utile in caso di supporto limitato, errore di caricamento o configurazione particolare del browser.

Il collegamento alternativo consente inoltre di aprire la risorsa direttamente. In presenza di target="_blank", l’attributo rel="noopener" impedisce alla nuova pagina di accedere inutilmente all’oggetto window.opener, migliorando la sicurezza della navigazione.

Controllare il referrer

L’attributo referrerpolicy stabilisce quali informazioni sull’URL della pagina di origine possono essere inviate al sito incorporato. Il valore strict-origin-when-cross-origin conserva l’origine nelle richieste tra domini diversi e limita l’invio del percorso completo, riducendo l’esposizione di dati presenti nell’URL.

Best practice

  • Usa loading="lazy" per iframe non essenziali al primo rendering, ma evita di ritardare il contenuto principale.
  • Imposta sempre un title descrittivo e specifico per ogni iframe.
  • Definisci width e height coerenti per riservare spazio e ridurre gli spostamenti del layout.
  • Inserisci un collegamento alternativo alla risorsa originale, soprattutto quando l’iframe contiene una funzione importante.
  • Non inserire iframe inutili o duplicati: ogni elemento può generare richieste di rete e codice eseguito separatamente.
  • Verifica il comportamento su dispositivi mobili, connessioni lente e browser con JavaScript limitato.
  • Utilizza una referrer policy adeguata quando la risorsa incorporata appartiene a un dominio esterno.
  • Monitora le prestazioni con gli strumenti del browser e controlla il tempo necessario per caricare l’iframe.
  • Informa l’utente quando il contenuto incorporato dipende da un servizio esterno o può essere bloccato da estensioni e impostazioni privacy.

Riepilogo

Un iframe non deve essere considerato un semplice rettangolo da inserire nella pagina. La sua configurazione influisce su prestazioni, accessibilità, stabilità visiva e privacy. loading="lazy" riduce il lavoro iniziale del browser per i contenuti non immediatamente necessari, mentre title rende il frame comprensibile agli utenti che utilizzano lettori di schermo.

Impostare dimensioni iniziali, fornire un fallback testuale e scegliere una politica per il referrer sono pratiche semplici ma importanti. Applicate insieme, permettono di incorporare contenuti esterni in modo più affidabile e rispettoso dell’esperienza dell’utente.

Approfondisci con risorse ufficiali

SHARE