2011-10-10 21 views
5

Siempre siento el atributo disabled para HTML <input> y todo me tuerce el cerebro. ¿Por qué elegir un nombre de atributo negado, no es enabled más intuitivo?Por qué atribuir "deshabilitado" pero no "habilitado"

Basta con comparar:

enabled=advancedUser 
disabled=not(advancedUser) 

enabled=not(locked) 
disabled=locked 

enabled=advancedUser and not(locked) 
disabled=not(advancedUser) or locked 
disabled=not(advancedUser and not(locked)) 
+5

Quizás, pero el W3C lo hizo de esa manera, y quejarse aquí no lo cambiará. – alex

Respuesta

12

La razón fundamental detrás de esto es que fue una adición posterior a los campos de entrada HTML, y tenía que ser de esa manera para mantener la compatibilidad con versiones anteriores de las páginas web existentes.

Cuando se definió originalmente la etiqueta <input>, su funcionalidad era extremadamente limitada. No tenía los atributos disabled o readonly, ni muchas de las otras propiedades que damos por sentadas hoy.

Todos estos se agregaron más adelante, pero para cuando se agregaron, muchos sitios web ya estaban usando los campos <input>, por lo que la capacidad de deshabilitarlo tenía que funcionar sin afectar el código existente que no lo usaba. Por lo tanto, el estado predeterminado debe ser enabled.

También tenía que ser una bandera booleana, por lo que es disabled en lugar de enabled=true. Este último habría sido un atributo de par clave-valor. Esta no hubiera sido una buena elección.

considerar lo siguiente:

enabled=false 
enabled=0 
enabled=FALSE 
enabled=no 
enabled=disabled 
enabled=flase 
etc... 

El navegador habría tenido que ser capaz de hacer frente a un gran número de valores posibles. Convertirlo en una bandera booleana simplifica enormemente las cosas. Hace que las especificaciones sean más fáciles de entender, tanto para el desarrollador del sitio web como para el desarrollador del navegador.

La otra cosa a tener en cuenta es que el momento en que esta propiedad se agregó a HTML estaba en el medio de las llamadas 'guerras del navegador'. Se estaban agregando muchas características a los navegadores web rivales, de manera apresurada y sin el beneficio de las especificaciones formales, y se agregaron muchas características que podemos mirar hacia atrás y desear que fuera ligeramente diferente.

No creo que esta sea una de esas características: la bandera disabled es perfectamente lógica realmente si te paras a pensarlo. Pero es muy posible que haya sido mejor diseñado si los desarrolladores de los navegadores hubieran estado cooperando un poco más en aquel entonces.

Pero cualquiera que sea el caso, la situación actual es que esto es lo que tenemos. Las especificaciones de HTML pueden estar evolucionando, pero las características existentes como esta no van a cambiar ahora.

Cuestiones relacionadas