2010-03-15 8 views
10

Así que cualquier dato de atributo personalizado que utiliza debe comenzar con "Data-":¿Por qué debería anteponer mis atributos personalizados con "datos-"?

<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 pase nada malo si sólo ignorar esto? Es decir:

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

Creo que una cosa mala es que mis atributos personalizados podrían entrar en conflicto con los atributos HTML con significados especiales (por ejemplo, name), pero aparte de esto, es que hay un problema con sólo escribir "example_text" en lugar de "data-example_text"? (No va a validar, pero a quién le importa?)

+3

El atributo lang es un atributo html predeterminado utilizado para el lenguaje hablado normal. Usar esto en el contexto actual entrará en conflicto con su comportamiento predeterminado y es un ejemplo perfecto POR QUÉ debe usar el prefijo data- *. – user007

Respuesta

16

Existen varias ventajas para mantener los atributos personalizados con el prefijo data- *.

  1. Garantiza que no habrá ningún conflicto con las extensiones de HTML en futuras ediciones. Este es un problema que ya se ha encontrado hasta cierto punto con algunos de los nuevos atributos introducidos en HTML5, donde los sitios existentes usaban atributos con el mismo nombre y esperaban un comportamiento personalizado diferente e incompatible. (Por ejemplo, se conoce el atributo required en input elementos de haber tenido algunos enfrentamientos en algunos sitios web populares en el pasado)

  2. Una vez navegadores son compatibles con la función, que proporcionará una API DOM más conveniente para acceder a estos atributos de las escrituras.

  3. Proporcionan una indicación clara de qué atributos son atributos personalizados y cuáles son atributos estandarizados. Esto no solo ayuda a los validadores permitiéndoles permitir cualquier atributo con data- * mientras siguen realizando comprobaciones de errores para otros atributos (por ejemplo, para detectar errores tipográficos), sino que también ayuda a que este aspecto del código fuente sea más claro para quienes lo leen, incluidas las personas quién puede trabajar en un sitio web después del autor original.

+1

No estoy conteniendo la respiración por (2), pero (1) y (3) son buenos puntos –

+1

Estás pensando en los días en que los navegadores presentaban nuevas funciones solo de forma lenta y rara vez.Actualmente, la mayoría de los navegadores admiten la propiedad del elemento 'dataset' para simplificar el acceso a las propiedades' data- * ': http://caniuse.com/#feat=dataset –

3

Según John Resig, todo el propósito de la adición de estos datos de atributos personalizados a los sepcs HTML5 es permitir a incrustar los datos personalizados en HTML sin dejar de ser válida .

Si no se preocupan por la validación (y, como usted ha dicho, sus atributos personalizados no están chocando con HTML existente atributos como name, id, style, etc.), entonces supongo que no tiene que utilizar el prefijo data-. Pero teniendo en cuenta que este no es un gran costo para escribir un código válido y compatible, no veo por qué no lo haría.

+1

Supongo que mi pregunta es: ¿qué valor obtengo al escribir código que valide? (Dado que tener que escribir el prefijo "data-" sin sentido repetidamente no es sin costo) –

+2

Por un lado, se obtiene el hecho de que puede usar un validador para encontrar problemas en su marcado. Esta es una gran ganancia cuando trabajas en una página, porque es muy fácil perder un elemento de cierre o algo así en una página larga. Si periódicamente se asegura de que su marcado sea válido, es mucho más probable que pueda detectar errores inevitables tan pronto como aparezcan. –

Cuestiones relacionadas