2010-03-15 20 views
10

Così tutti i dati attributo personalizzato che io uso dovrebbe iniziare con "data-":Perché dovrei anteporre i miei attributi personalizzati a "data-"?

<li class="user" data-name="John Resig" data-city="Boston" 
    data-lang="js" data-food="Bacon"> 
    <b>John says:</b> <span>Hello, how are you?</span> 
</li> 

Will nulla di male accada se ho appena ignorare questo? Vale a dire:

<li class="user" name="John Resig" city="Boston" 
    lang="js" food="Bacon"> 
    <b>John says:</b> <span>Hello, how are you?</span> 
</li> 

immagino una cosa brutta è che i miei attributi personalizzati potrebbero entrare in conflitto con attributi HTML con significati particolari (ad esempio, name), ma a parte questo, c'è un problema con solo la scrittura "example_text" invece di "dati-example_text"? (Non sarà la convalida, ma che importa?)

+3

L'attributo lang è un attributo html predefinito utilizzato per la lingua normale e parlata. L'utilizzo di questo nel contesto corrente sarà in conflitto con il suo comportamento predefinito ed è un esempio perfetto PERCHÉ dovresti usare il prefisso data- *. – user007

risposta

16

Ci sono diversi vantaggi nel mantenere gli attributi personalizzati con prefisso data- *.

  1. Garantisce che non ci sarà alcun scontri con estensioni HTML nelle edizioni future. Questo è un problema che è già stato riscontrato in qualche misura con alcuni dei nuovi attributi introdotti in HTML5, dove i siti esistenti utilizzavano attributi con lo stesso nome e si aspettavano comportamenti personalizzati diversi e incompatibili. (Per esempio l'attributo required su input elementi è noto per avere avuto alcuni scontri su alcuni siti web popolari in passato)

  2. Una volta che i browser supportano la funzione, che fornirà un più conveniente DOM API per l'accesso ai questi attributi da script.

  3. Forniscono una chiara indicazione di quali attributi sono attributi personalizzati e quali sono attributi standardizzati. Questo non solo aiuta i validatori permettendo loro di permettere qualsiasi attributo con data- * mentre sta ancora eseguendo un utile controllo degli errori per altri attributi (ad esempio per catturare errori di battitura), aiuta anche a rendere questo aspetto del codice sorgente più chiaro a chi lo legge, comprese le persone chi può lavorare su un sito Web dopo l'autore originale.

+1

Non sto trattenendo il respiro per (2), ma (1) e (3) sono buoni punti –

+1

Stai pensando ai giorni in cui i browser hanno introdotto nuove funzionalità solo lentamente, e solo raramente.In questi giorni la maggior parte dei browser supporta la proprietà dell'elemento 'dataset' per semplificare l'accesso alle proprietà' data- * ': http://caniuse.com/#feat=dataset –

3

Secondo John Resig, l'intero scopo di l'aggiunta di questi dati di attributi personalizzati ai sepcs HTML5 è quello di permettere di inserire i dati personalizzati in HTML pur essendo valida .

Se non si cura di convalida (e, come hai detto tu, i tuoi attributi personalizzati non sono in collisione con HTML esistente attributi come name, id, style, ecc), allora immagino che non c'è bisogno di usare il prefisso data-. Ma considerando che questo non è un costo enorme per scrivere codice valido e compatibile, non vedo perché non lo faresti.

+1

Credo che la mia domanda sia: quale valore ottengo scrivendo il codice che convalida? (Dato che dover digitare ripetutamente il prefisso "data-" senza significato non è esente da costi) –

+2

Per prima cosa, si ottiene il fatto che è possibile utilizzare un validatore per trovare problemi nel markup. Questa è una grande vittoria quando lavori su una pagina, perché è così facile perdere un div di chiusura o qualcosa in una lunga pagina. Se si assicura periodicamente che il markup sia valido, è molto più probabile che sia in grado di individuare gli errori inevitabili subito dopo la loro comparsa. –

Problemi correlati