Comunemente, parlando di HTML5, intendiamo un vasto insieme di specifiche che comprendono nuovi elementi di markup, funzionalità multimediali (audio e video), API JavaScript, CSS3, SVG, ecc.
Alcune di esse sono da tempo supportate praticamente da tutti i principali browser e sono disponibili su ogni piattaforma (desktop Windows, Mac OSX e Linux, tablet e smartphone), altre invece solo in pochi scenari specifici (in particolare le specifiche non ancora stabili, implementate in via sperimentale solo da alcuni vendor).
In uno scenario così frammentato diventa difficile districarsi per decidere se una soluzione ha senso essere adottata oppure no o se conviene fornire anche un'implementazione alternativa (ad esempio nel caso di un lettore multimediale, specificando anche un player basato su plugin come Silverlight o Flash).
Quando posso usare...
A questo scopo può essere utile consultare il sito http://caniuse.com che, per ogni funzionalità di HTML5, fornisce una tabella che riepiloga il supporto della stessa in base al browser e alla relativa versione e un riepilogo complessivo (basato sulle statistiche di diffusione dei browser di StatCounter).Ad esempio la semi-trasparenza per le immagini in formato PNG è supportata da tutti ad eccezione di Internet Explorer 6 ed è disponibile quindi su oltre il 93% dei client, mentre i font definiti in formato SVG hanno una bassa compatibilità (circa il 34%, non essendo implementati da IE, Firefox, OperaMini e su Android 3.0 e precedenti).
Compatibilità di HTML5 con dispositivi mobile e tablet
Per quanto riguarda lo sviluppo per dispositivi mobile il sito http://mobilehtml5.org/ fornisce un livello di dettaglio maggiore rispetto a caniuse.com (che contempla solo Safari Mobile per iOS, Android Browser e Opera Mobile) schematizzando il supporto alle principali feature di HTML5 per le seguenti piattaforme:- Safari Mobile su iOS (iPhone, iPad)
- Android Browser (telefoni / tablet)
- Blackberry Browser (telefoni / tablet)
- Nokia Browser (Meego / Symbian)
- Internet Explorer (Windows Phone)
- Opera (Mobile / Mini)
- Firefox (Android)
- webOS Browser
Come utilizzare questi dati?
Tabelle riassuntive come quelle riportate dai siti indicati qui sopra non devono però essere utilizzate a livello di implementazione ma solo come indicatori statistici per guidare le nostre scelte in fase di progettazione, possibilmente incrociando i dati con le statistiche reali dei visitatori del sito o dell'applicazione o con eventuali requisiti imposti (ad esempio nel caso di un'app sviluppata ad hoc per un certo smartphone o per una Intranet dove il browser è imposto dall'amministratore).In pratica è assolutamente da evitare la così detta browser detection (ovvero modificare il comportamento dell'applicazione in funzione dello user agent del client) in favore della feature detection (ovvero dal determinare applicativamente se una funzionalità è o meno disponibile e agire di conseguenza, tipicamente con implementazioni alternative o un gracefully degrade).
Link e riferimenti utili
Il nostro speciale sullo sviluppo web mobilehttps://www.aspitalia.com/focuson/1267/Speciale-Web-Mobile-Costruire-Applicazioni-ASP.NET-JQuery-Mobile.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Utilizzare Tailwind CSS all'interno di React: primi componenti
Come migrare da una form non tipizzata a una form tipizzata in Angular
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Eseguire query verso tipi non mappati in Entity Framework Core
Miglioramenti nelle performance di Angular 16
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Load test di ASP.NET Core con k6
Routing statico e PreRendering in una Blazor Web App
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Code scanning e advanced security con Azure DevOps