2010-03-22 13 views
25

Tengo un sitio que se basa en gran medida en javaScript. Creé un sitio espejo, que tiene todos los JS, así como todos los elementos que requieren que se elimine JS. ¿Cuál es una forma fácil y buena de redirigir a los usuarios al sitio espejo si no tienen habilitado javaScript?¿Cómo redirigir si javaScript está deshabilitado?

yo probamos este, pero no parece muy buena:

<noscript> 
    <meta http-equiv="refresh" content="0; URL=nojs/index.php"> 
</noscript> 

También probé a poner cabecera de redirección en la etiqueta noscript, pero eso no funcionó.

+3

No intenten ser molestos, pero su sitio no debería depender realmente de JavaScript. ¿Dónde está la mejora progresiva? – James

+0

@ J-P Todo depende de tu audiencia. Gmail debe operar con personas que no tienen Javascript porque tiene usuarios de Hotmail. Sin embargo, Google Reader tiene una base de usuarios más web-savy, y probablemente pueda confiar en que Javascript esté presente. –

+0

@ J-P | ¿Qué pasa si es un juego? – s84

Respuesta

21

hacer la versión sin JavaScript del sitio del defecto. Incluya un pequeño script allí para redirigir al sitio con guiones.

O abandonar el uso de una redirección del todo y van con Progressive Enhancement

+36

... redirigiendo así el 99% de los visitantes en lugar del 1%. Semánticamente, estoy de acuerdo con sus sentimientos, pero considerando todas las cosas, no creo que sea una muy buena idea. –

+0

@FRKT, esperemos que la página sea almacenable en caché, por lo que redirigir sería lo suficientemente rápido. Esto puede ser un problema con sitios con mucho tráfico, pero con una conexión lo suficientemente rápida no creo que esto sea un problema importante. Solo una forma de averiguarlo, por supuesto. – strager

+5

Bueno, la solución ideal en este caso sería usar mejora progresiva en lugar de una redirección. – Matt

15

¿Cuál es su definición de "no muy bueno"?

Todos mis sitios utilizan:

<noscript> 
    <meta http-equiv="refresh" content="0; url=http://www.sadtrombone.com/" /> 
</noscript> 
+10

'' solo es válido dentro del encabezado, porque modifica los encabezados. '

+8

@Mikael: 1) Tener HTML validar 100% estrictamente de acuerdo con el estándar W3C no es importante. 2) Funciona en todos los principales navegadores. –

+0

Lo que quiero decir es que la redirección no es perfecta. Va al primer sitio y solo redirige después de una fracción de segundo. Por lo tanto, no es muy bueno. – zeckdude

75
<noscript> 
    <p>This site is best viewed with Javascript. If you are unable to turn on Javascript, please use this <a href="http://sitewithoutjavascript.com">site</a>.</p> 
</noscript> 

Algunas personas deliberadamente desactivar Javascript, y es posible que desee darles una oportunidad para encenderlo antes de redirigir ellos.

+2

Desearía poder votar esto más de una vez. –

+0

¡Ahhhhhhhhhhhhh! – strager

+0

Simple pero satisfactorio;) – user2097217

6

No haría la redirección del lado del cliente, ya que podría parecer molesto para el usuario. En cambio, lo que yo haría es usar <noscript> para mostrar el contenido de este sitio sin JS en la misma página. Puede ser más trabajo, pero definitivamente sería una experiencia más fluida.

44

Use este código que se me ocurrió:

<noscript> 
    <style>html{display:none;}</style> 
    <meta http-equiv="refresh" content="0.0;url=nojs/index.php"> 
</noscript> 

Utiliza el estilo de bloquear lo que está en la página por lo que entonces la gente no notará nada antes de que vuelve a dirigir. Lo único que me molesta es que quiero algo mejor que la actualización de meta, ya que se puede bloquear en algunos navegadores como IE. Un encabezado PHP no es realmente una solución, ya que no se puede poner en una etiqueta noscript, ya que simplemente la ignorará y la escribirá de inmediato.

+0

Ojalá pudiera +100 esto. Ben, esta es una respuesta increíble y casi exactamente lo que estaba buscando. Lo cambié un poco para mis necesidades. En lugar de ocultar mi HTML, como lo hace, solo oculto el contenido de mi página (incluido en una etiqueta de formulario), así puedo insertar un mensaje para el usuario entre las etiquetas noscript en lugar de confiar en meta-refresh. Buen trabajo sin embargo. Tu respuesta me hizo comenzar a donde quería llegar. –

+0

@ChrisHolmes, gracias. Me alegra que te haya ayudado. –

2

Se me ocurrió una solución mejor que tener que redirigir al usuario ya que la meta-actualización se puede desactivar en IE.

poner esto en el CABEZA:

<style>div#body{display:none;}</style>

poner esto en el cuerpo:

<noscript>NO JAVASCRIPT CONTENT HERE</noscript>

<noscript><div id="body"></noscript>JAVASCRIPT CONTENT HERE<noscript></div></noscript>

De esa manera las etiquetas están donde están destinados a ser.

+0

esa es una solución muy inteligente – Fred

+1

Intenté esto con la última versión de Chrome, y no funcionó. El contenido de las etiquetas '

' and '
'. – krillgar

Cuestiones relacionadas