Estaba pensando que si se requiere que todos los usuarios de un sitio web tengan habilitado JavaScript, ¿está bien usar JavaScript molesto?
Estoy a favor de la mejora progresiva, pero ¿cuál es el punto cuando una aplicación web avanzada despide a los usuarios en la puerta si tienen un navegador antiguo o JavaScript deshabilitado?
Tenemos un público objetivo muy reducido, y podemos decirle a nuestro público objetivo qué navegador y complementos / funcionalidades deben tener. Entonces mi pregunta es, ¿está bien mezclar JS y HTML en ese caso? Como usar atributos onclick.
Respuestas:
Esta es una decisión comercial en lugar de una decisión de diseño.
Hay un costo por proporcionar una versión del sitio web que funcione sin JavaScript (o Flash, o Silverlight). El negocio tiene que decidir si la pérdida de ingresos / visitantes vale la pena o no.
Entonces, si cuesta $ 10,000 escribir esta versión (el número puede estar en el lado grande, pero está allí solo para este ejemplo), ¿recuperará la empresa ese desembolso durante la vida útil del sitio? Si no, entonces no proporcione esa versión.
Sin embargo, si solo cuesta $ 100 escribir esta versión, entonces tendría sentido proporcionar la degradación elegante.
Habiendo tomado la decisión comercial de apuntar solo a los navegadores habilitados para JavaScript y esperar que sus usuarios tengan habilitado JavaScript, entonces tiene mucho sentido hacer que su aplicación aproveche las funciones que ahora tiene disponibles. Lo único que tendrá que hacer es (como lo hace Stack Overflow en sí) colocar una advertencia de que el sitio no funcionará correctamente si el usuario no lo tiene habilitado.
fuente
Algo que nadie más ha mencionado todavía ...
El 99% de los sitios web dan la bienvenida a un visitante en particular, uno con poco o nada de JavaScript. Ese visitante tiene un nombre: Googlebot .
Una gran razón por la que todos deberían preocuparse por los visitantes ciegos, también ...
Si eres uno de los pocos que no se preocupa en absoluto por el tráfico de los motores de búsqueda, bueno, esa es tu prerrogativa, pero ciertamente no es una regla general.
fuente
Las personas que escriben cosas para entornos internos específicos son una gran razón por la que IE6 todavía existe.
Piénsalo
fuente
Si está haciendo un sitio solo para JS (tal vez 'aplicación' en este caso es una palabra mejor), la llamada 'discreción' de JS no importa tanto como en el caso, cuando necesita degradarse con gracia a Versión JS.
Sin embargo: JavaScript escrito de una manera discreta es en general más fácil de escribir (y al menos lo encuentro así) y mantener. Es más fácil introducir cambios en el diseño HTML que no rompan JS, y cambia a JS sin preocuparse por romper HTML.
fuente
Si está construyendo un sitio web, mantendría JavaScript discreto. Sin embargo, si está creando algún tipo de aplicación (como Google Docs), JavaScript será bastante molesto.
JavaScript y HTML5 son excelentes para crear aplicaciones si esa es su necesidad, pero realmente es una opción comercial.
fuente
La mayoría de los usuarios (mis usuarios, no sé sobre sus usuarios) tienen JavaScript disponible y habilitado. Ofrezcamos a esos usuarios una excelente experiencia de usuario. Sin embargo, aún debe proporcionar una versión de su sitio que funcione sin Javascript. Sé que es complicado crear 2 versiones, pero así es como funciona el desarrollo web. (En realidad, es posible que deba crear varias versiones, una tercera podría ser una versión móvil de su sitio).
Lo que no desea hacer es diseñar para el denominador menos común: "Bueno, hay algunos usuarios que tienen Javascript deshabilitado, por lo que vamos a diseñar nuestro sitio para que funcione bien para ellos, sin Javascript, acceda al servidor para todo ". Esto solo penaliza a la mayoría de los usuarios que tienen Javascript.
fuente
Usted mencionó el uso de atributos onlick. ¿Está planeando usar un controlador de eventos de JavaScript para la navegación de la página?
Recomendaría contra esto por una sola razón: rompe el clic central .
Para hacer clic regularmente en el enlace, suponiendo que JavaScript esté habilitado, estos serán funcionalmente equivalentes:
Si intenta hacer clic con el botón central en el primer ejemplo, obtendrá una página en blanco en lugar de myPage.htm.
Además de este ejemplo, creo que está bien usar JavaScript molesto si tiene sentido comercial para usted. Lleva menos tiempo escribir (pero no necesariamente mantener) JavaScript en línea, y la pérdida de la mejora progresiva puede no ser importante en su situación.
fuente
El molesto JavaScript estaba bien hace 10 años. También está bien si eres un aficionado, o si estás construyendo un prototipo desechable, o si hay alguna circunstancia que lo requiera, como la dependencia del código heredado o el código impulsado por datos y simplemente costaría mucho demasiado para arreglar todo
Si está construyendo algo desde cero, siga los estándares, escriba un código bueno, limpio y fácil de mantener. Escribe algo de lo que estarás orgulloso y que no te enfermará dentro de un año cuando un pobre imbécil te pida ayuda porque no entienden un truco que hiciste. Escriba algo que garantice que sus diseñadores web puedan intercambiar fácilmente CSS sin tener que buscar en HTML y JavaScript desordenados.
Cree la aplicación para que tenga espacio para crecer, de modo que cualquier desarrollador pueda entrar y mantenerla. El tiempo invertido ahora ahorrará tiempo en el futuro, si no su tiempo, el de otra persona.
Asegúrese de que JavaScript se pueda reutilizar en otro contexto. Asegúrese de que un rediseño completo del sitio web puede ser solo eso, un rediseño y no una reconstrucción completa de algo que ya existe pero que no fue construido de manera dura.
Imagine lo vergonzoso que sería tener que pasar la misma cantidad de tiempo en un rediseño que en su construcción original.
Confíe en mí por experiencia, JavaScript discreto le impedirá cometer algunos errores costosos.
fuente
Muy bien, solo llámame el encargado de la cripta en todo el necro que hago, pero nunca he sentido que el verdadero valor de esto se haya entendido correctamente. Históricamente, se ha afirmado que "JavaScript discreto" o, mantener su JS fuera del HTML a través de atributos de controlador de eventos HTML en línea y etiquetas de script que no se vinculan a un archivo tanto como sea posible es un gran elemento clave de:
¡MENTIRAS! (bueno, ahora lo estarían)
La verdad del asunto es que usted podría hacer JavaScript técnicamente molesto y aún sacar los tres elementos anteriores. A menos que estuvieras creando contenido HTML dinámicamente, lo cual fue un gran no-no de SEO en el día.
Pero pare y piense ... ¡en USTED!
Realmente, el gran beneficio, la victoria más importante y menos vendida de mantener la separación siempre ha sido el beneficio directo que el desarrollador obtiene de ella. Puede tener tantos controladores de eventos como desee en el mismo elemento html para el mismo evento que sea conveniente. Eso significa que si una etiqueta con
class="some_class"
siempre obtiene un cierto comportamiento pero también obtiene un comportamiento adicional cuando está dentro de unid="bonus_behavior"
div, no tenemos que comenzar a jugar con la lógica dentro de nuestro controlador de eventos permitido para ramificarse para eso. Simplemente podemos agregar o no agregar controladores dependiendo del contexto.Fácil de leer también
Otro beneficio es la legibilidad. Esta fue una preocupación más crítica cuando las herramientas del navegador consistían en un mensaje de error exclusivo de IE que le decía que había algo mal
[object]
pero IMO, todavía es un gran problema. CSS aquí, JS allá y HTML es el lugar donde se encuentran tanto ellos como el servidor. Con todas esas cosas reunidas en un solo lugar, tiene sentido confiar en los ganchos (los ID, las clases y la jerarquía) para crear una capa de abstracción que todo usa para conectarse al HTML.En mi opinión, cuanto más pueda mantener su HTML, CSS y JS separados, más fácil será no solo leer sino también modificar y comprender lo que está sucediendo. Veo un div vacío con "dynamic_combo_box" como clase y tengo una buena idea de que algo está haciendo una selección elegante que carga datos dinámicamente. Tengo una idea de cómo encontrar eso en JS y CSS y si me encuentro con la clase en esas preocupaciones, tendré una buena idea de qué se trata y cómo encontrarlo en el HTML.
Demasiado fácil de hacer aún más descuidado
Y, por supuesto, la legibilidad tiende a ir de la mano con la mantenibilidad. Cuando simplemente hace las cosas directamente volcando todo en las etiquetas de script donde se encuentra el HTML relevante, la mayoría de las veces es más fácil para las personas simplemente cortar y pegar ese script en el HTML de otra página en la que están trabajando cuando quieren una funcionalidad similar, lo que significa que ahora tiene una cosa que probablemente se convertirá en dos cosas molestamente similares pero no 100% parecidas cuyo comportamiento puede volverse problemático con el tiempo al desafiar las expectativas y requerir la adición de más ramificaciones sin sentido para manejar las excepciones que uno necesita. otro no lo hizo.
Por lo tanto, el comportamiento de manipulación de esos enlaces HTML fomenta la reutilización del código de una manera inteligente. Si necesita ramificar el comportamiento para una implementación alternativa, simplemente vaya a la misma función y maneje allí con la jerarquía HTML o tal vez un att de datos que desencadene algún comportamiento alternativo. Es una parada para cualquiera que quiera entender cómo funcionan los elementos de la interfaz de usuario de un cierto tipo y esos tipos de corte y pegado despreciablemente perezosos harán lo correcto / más fácil de mantener solo porque es lo más fácil de hacer. hazlo ahora y esa es la mejor manera de hacer posible el mantenimiento. Conviértalo en lo más fácil "duh", incluso para alguien a quien no podría importarle menos si se debe al pánico o la apatía.
¿Pero qué hay de 2014?
Puede ser un punto legítimo que en las aplicaciones modernas de una sola página, algunas de estas cosas más rigurosas tal vez no deberían ser tan dogmáticas como lo han sido, pero créanme cuando digo que no creo que sea el único que se vendió porque finalmente facilita el trabajo. Soy flojo de una manera (espero) mayormente buena. Me gusta cuando solo tengo que cambiar las cosas en un lugar para obtener cambios en toda una aplicación, cuando solo tengo que mirar en un lugar para descubrir cuál es el error, y cuando me resulta fácil entender qué diablos es pasando y cómo reutilizar mejor ese código para hacer algo muy similar.
Es bueno como dividir una base de datos o una capa de datos es bueno. En última instancia, es un ahorro de tiempo por el que no hice eso, como tomar los cinco minutos para lavar la ropa la noche anterior, en lugar de pasar 10 minutos febrilizando sus bóxers y realizando controles de olores paranoicos a la mañana siguiente.
Para mí, son esas motivaciones egoístas las que siempre han sido el punto principal de por qué me aferro no solo a la discreta JS, sino a la separación de las preocupaciones de estilo / comportamiento / contenido tanto como sea posible, incluso cuando WHAT-freaking-WG hace todo lo posible para confundir esas preocupaciones de maneras comprensiblemente asombrosas y geniales / prácticas.
Ahora que todo el mundo está haciendo SPA y es casi tonto tratar de convencer a las empresas de que deberíamos preocuparnos por las personas que se ejecutan sin JS (la accesibilidad ahora se puede, supuestamente, manejar con contenido generado por JS), parece que la próxima generación de desarrolladores de JS se preocupa menos sobre esto, pero en mi opinión, todavía hay una victoria allí y es principalmente para usted, el desarrollador que escribe y mantiene estas cosas. Y realmente, esa victoria siempre debería haber sido el punto más subrayado, pero nunca lo ha sido por alguna razón, ya que finalmente lo beneficia a usted y también al producto por un feliz accidente en virtud de ser más fácil de modificar / modificar / depurar.
¿Alguna vez está bien?
Pues sí, supongo. En una aplicación desechable para un concurso o algo así. Pero todavía lo haría solo porque tengo la costumbre y no es realmente más difícil de hacer.
fuente
Si conoce su entorno operativo objetivo, Javascript y frameworks como jQuery pueden ser una verdadera bendición. Por ejemplo, en un entorno empresarial donde el SOE tiene Javascript e IE8 que es más que seguro para escribir aplicaciones intensivas de navegador del lado del cliente.
fuente
Hacer que la degradación elegante sea más fácil es solo uno de los muchos factores que hacen que JavaScript sea una opción atractiva y, en mi opinión, no es la más importante.
Por experiencia personal, diría que si está hablando de un proyecto más grande, uno que probablemente evolucionará mucho con el tiempo, el uso de un estilo discreto hará que la aplicación sea MUCHO más fácil de mantener, depurar y refactorizar. Esta es la razón principal por la que siempre usamos un estilo discreto, incluso en sitios que exigen que JavaScript esté habilitado para todos los visitantes.
fuente
En general, si está desarrollando un "sitio web" tradicional que está disponible de forma anónima, indexado por los motores de búsqueda, y donde los ingresos son generados por los anuncios, entonces debe proporcionar una degradación elegante. La idea es que este tipo de sitio vive y muere por la accesibilidad, por lo que limitar la accesibilidad significa perder toneladas de visitas a la página y, por lo tanto, ingresos por publicidad.
Un "sitio" (aplicación web) de acceso restringido, generalmente no indexable y no basado en ingresos publicitarios, puede ser mucho más flexible. Todo se reduce a una decisión entre la amplitud del soporte, la profundidad de las características y el costo de desarrollo. Piense en ello como desarrollar una aplicación tradicional: ¿qué plataforma admite y cuáles son las especificaciones mínimas? Si apunta a una sola plataforma y especificaciones limitadas, puede concentrarse en proporcionar un producto superior con menos costos de desarrollo y soporte, a costa de la pérdida de participación potencial en el mercado.
Ejemplo: Google Search es un sitio web. Google Docs es una aplicación web. La Búsqueda de Google es sencilla y puede funcionar de manera idéntica sin JavaScript, CSS y / o imágenes, etc., funciona en los navegadores en modo de texto tan bien como en los últimos navegadores GUI. Google Docs simplemente no funciona con JavaScript deshabilitado y ni siquiera se degrada con gracia, ni siquiera una advertencia para habilitar JavaScript.
fuente
Prefiero tener la mayoría del diseño y la navegación manejados en CSS. Sí, Lynx puede no ser compatible, pero todos los navegadores con todas las funciones que conozco no pueden desactivarlo. Entonces JavaScript se puede usar para cosas más llamativas pero no necesarias. También me gusta Ruby on Rails para este propósito. Puede hacer mucho de lo que JavaScript necesitaría para el lado del servidor siempre que no necesite actualizaciones dinámicas de la página.
Más orientado a la respuesta de la pregunta: NO ME GUSTA el JavaScript requerido, pero hay un caso de negocio en el que se requiere, como señaló ChrisF.
fuente
Javascript es el estándar de defecto cuando se trata de cualquier tipo de contenido dinámico entregado del lado del cliente, si no tienen JS, entonces probablemente no tendrán Silverlight.
Entonces tiene que pensar en su mercado / audiencia ¿son programadores.stackexchcange o bbc.co.uk/news? Audiencias muy diferentes.
fuente
Como puede mirar por la web y ver "JavaScript molesto" en muchos sitios, su pregunta básica es respondida, sí, está bien, y muchos sitios populares lo hacen, incluso Google.
Sin embargo, lo más importante es la degradación elegante de la funcionalidad, aunque insista en que sus usuarios deben tener Javascript habilitado, debe proporcionar un nivel de experiencia decente para los usuarios que no son js, o nunca regresarán voluntariamente.
fuente