2008-10-29 32 views

Respuesta

13

El problema con el uso de secuencias de comandos para comprobar si está activado Javascript es que sólo se encuentra que después de la secuencia de comandos no se ha ejecutado.

Algunas soluciones intentan lo contrario: usan javascript para establecer un valor y luego proporcionan controles habilitados para Javascript si ese valor se detecta más tarde. Sin embargo, esto no funciona con las herramientas javascript, a veces habilitadas, como el complemento Firefox NoScript.

Una solución más sólida es enviar siempre el control compatible con HTML simple, y luego ejecutar javascript en la carga de la página para agregar los controladores de eventos correctos/elementos DOM adicionales/etc.

Sin embargo, no sé cómo encaja esto con el enfoque ASP.NET lleva a los controles.

+0

Creo que tienes razón, es probablemente mejor asumir que es JS deshabilitado y luego ejecuta el script para transformar los elementos cuando llega al cliente. Gracias. – Kieron

3

La etiqueta noscript se usa para definir un contenido alternativo (texto) si NO se ejecuta una secuencia de comandos.

EDIT: Hola Kieron, echar un vistazo a este enlace: Creating a Server Control for JavaScript Testing y Detect if JavaScript is enabled in ASPX

+0

Estaba buscando algo un poco más fino que eso. De hecho, necesito renderizar diferentes elementos si JS está deshabilitado. p.

  • // javascript activado // JavaScript desactivado
Kieron

+0

+1 para encontrar el mismo artículo CP =) – StingyJack

3

El navegador no comunica la disponibilidad de Javascript con la solicitud.

Una cosa que he hecho, aunque no estoy seguro de que sea aplicable en su caso, es generar la página como si Javascript no estuviera habilitado, luego tener algo de Javascript que apaga las cosas solo HTML y enciende las cosas HTML-Javascript.

También podría hacer que la primera página presione "phone home" a través de Javascript para registrar en la sesión si Javascript está habilitado o no.

+0

Lamentablemente, JavaScript puede habilitarse o deshabilitarse sin borrar las cookies, por lo que el método "phone home" no es a prueba de fallas. –

+0

@JanDvorak - de acuerdo, esa no era ni sería mi primera opción. Creo que, en general, sería bastante seguro, ya que las personas que desactivan el javascript probablemente lo dejen en lugar de cambiar a mitad de camino y si cambian a mitad del flujo, es probable que esperen un comportamiento extraño. Los scripts rotos en las páginas siguientes son un problema diferente. – tvanfosson

0

Lo que debes hacer es esto. Después de muchas pruebas y noches de retraso, decidí usar la solución más simple. Arrastre una etiqueta en la parte superior de la página y asegúrese de que dice "ejecutar en el servidor". Luego, para el atributo Texto, coloque Texto = "Este sitio web requiere Javascript". Esa debería ser la mejor respuesta. : D

Cuestiones relacionadas