HTML5 introduce la possibilità di modificare nativamente porzioni di pagina semplicemente impostando all'elemento contenitore l'attributo contentEditable="true".
Nell'esempio seguente è possibile, una volta visualizzata la pagina nel browser, cliccare sul secondo o sul terzo paragrafo di testo e modificarne il contenuto:
<!doctype html> <html> <head> <title>HTML5Italia.com</title> <style> p { padding: 10px; } p[contenteditable="true"] { border: 1px dashed #555; } p[contenteditable="true"]:hover { background: #ffffaa; } p[contenteditable="true"]:focus { background: #ffff55; } </style> </head> <body> <h1>Titolo principale</h2> <p>Questo non si può modificare</p> <p contenteditable="true">Questo sì: Lorem ipsum...</p> <p contenteditable="true">...e anche questo: Lorem ipsum...</p> <p>Invece quest'ultimo paragrafo non è modificabile</p> </body> </html>
Lo stile dichiarato consente di evidenziare le aree modificabili all'interno del documento (creando un bordo tratteggiato e impostando uno sfondo giallo chiaro al passaggio del mouse o giallo intenso in fase di editing).
Per consentire la modifica dell'intero documento è possibile utilizzare l'attributo designMode che accetta come valori on (il documento è modificabile) e off (il documento non è modificabile).
In questo modo diventa ad esempio molto semplice realizzare l'interfaccia di imputazione di un sistema di gestione dei contenuti (CMS): il contenuto può essere modificato direttamente nella pagina completa che lo contiene, valutando immediatamente il risultato finale (la logica di persistenza dei dati inseriti deve comunque essere implementata ad hoc, ad esempio inviando il testo aggiornato al server mediante AJAX).
Inoltre - utilizzando questi attributi in combinazione con le API per interagire con il documento (come document.execCommand) - diventa relativa semplice realizzare un editor evoluto di tipo WYSIWYG.
Tutti i principali browser supportano l'attributo contentEditable: Firefox 3.5+, Safari 3.1+ (5.0 su iOS), Opera 9+, Chrome e Internet Explorer 5.5+ sebbene le diverse implementazioni differiscano nelle modalità di editing di elementi specifici.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eliminare spazio inutilizzato in un Azure Container Registry
Migrare da Azure DevOps a GitHub
Utilizzare una sequence per generare numeri sequenziali con Entity Framework Core
Gestire aree contestuali in un'applicazione Blazor
Installazione di una PWA Blazor
Blazor + .NET 6 = .NET ovunque
Utilizzare WordPress con Azure App Service
Modernizzare le applicazioni WPF e Windows Forms con .NET e Windows Apps SDK
Creare un'istanza di Azure Service Bus con ARM
Caricare automaticamente i dati delle relazioni in EF Core 6
Creare l'effetto floating label per gli input con Bootstrap 5
Configurare .NET 6 su Azure Web App con ARM
I più letti di oggi
- Monitorare contemporaneamente i cambiamenti di più proprietà dello scope di AngularJS
- "welcome to the modern web development" con @dbochicchio e @kasuken, ora live per iniziare #PWAConfIT parleremo di #PWA e di come costruire applicazioni web moderne per tutto il pomeriggio. Seguiteci live su https://aspit.co/PWAConf-20 #aspilive
- Sfruttare le dipendenze con il model binding di ASP.NET Web Forms
- rilasciato #vs2017.5, con importanti aggiornamenti sulla velocità di caricamento dei progetti, supporto a C# 7.2 e nuove feature di Xamarin.disponibile inoltre anche #VS for #Mac, con sign integrato delle app iOS.altre informazioni su https://aspit.co/bkk
- Disabilitare un pulsante in Blazor durante il salvataggio