2012-03-27 13 views
9

me gustaría escribir un script que detecta si el usuario tiene JavaScript desactivado, y en caso afirmativo, redirigir a otra página (digamos mysite.com/enablejavascript)n-Javascript detección de secuencias de comandos de redirección +

Sin embargo, ¡No tengo idea de dónde empezar! Gracias.

+8

Tendrá que usar ''

+1

@BrianDriscoll. ¿Por qué no lo escribiste una respuesta? ¡tiene la mayoría de los votos a favor! – gdoron

+0

Si JavaScript está deshabilitado, ¿cómo exactamente podría ejecutar su script? –

Respuesta

4

¿Cómo desea escribir un guión cuando java-script está deshabilitado ...?

No se puede hacer. Puede mostrar un mensaje cuando javascript está deshabilitado con <noscript>.

<noscript> etiqueta en MDN:

El NoScript elemento HTML() define una sección de HTML que se insertará si un tipo de secuencia de comandos en la página no es compatible o si scripting está desactivado actualmente en el navegador.

23

Gdoron mencionó noscript ya. Junto con meta refresh ¹ puede redirigir a los usuarios si tienen JavaScript deshabilitado.

Una redirección de JavaScript se puede hacer con location.replace(URL).

<head> 
    <noscript> 
    <meta http-equiv="refresh" content="0; url=http://example.com/without-js" /> 
    </noscript> 

    <script> 
    location.replace('http://example.com/with-js'); 
    </script> 
</head> 

Ejemplo de noscript + meta de actualización: http://pastehtml.com/view/bsrxxl7cw.html

1) Cuidado con la sección drawbacks del artículo de Wikipedia!

etiquetas meta de actualización tienen algunos inconvenientes:

  • Si una página redirecciona demasiado rápido (menos de 2-3 segundos), usando el botón "Atrás" en la página siguiente puede causar algunos navegadores para mover volver a la página de redireccionamiento, con lo cual la redirección volverá a ocurrir. Esto es malo para la usabilidad, ya que esto puede causar que un lector quede "atrapado" en el último sitio web.
  • Un lector puede o no querer ser redirigido a una página diferente, lo que puede llevar a la insatisfacción del usuario o plantear dudas sobre la seguridad.
+3

+1. no sabía esa cosa 'Meta refresh'. Bonito. Agregué los inconvenientes a tu respuesta. Espero que no te importe – gdoron

+1

No me importa. Gracias :) – kay

+0

OK Esto parece funcionar bien para mí. Sin embargo, Visual Studio afirma que noscript no se puede incrustar en la cabecera y que meta no se puede incrustar en noscript. Mi DOCTYPE es y la etiqueta html tiene el espacio de nombres ¿Alguno de ellos relacionados? – naskew

-2

Prueba esto: Si la escritura de Java está desactivado, entonces mostrará un enlace php

<script type="text/javascript"> 

document.write("<button type='button' onclick='somefunction()' >Some Text</button>"); 

</script> 

<noscript> 

<?php echo "<a href='redirectfile.php'>Some Text</a>"; ?> 

</noscript> 
+0

Sea más descriptivo sobre su solución. Consulte: [Cómo responder] (http://stackoverflow.com/questions/how-to-answer) – askmish

2

Usted debe combinar HTML redirigir en un elemento noscript. Encontré este generador JavaScript redirection. Aquí está tu código de ejemplo:

<!-- Pleace this snippet right after opening the head tag to make it work properly --> 

<!-- This code is licensed under GNU GPL v3 --> 
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited --> 
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ --> 

<!-- REDIRECTING STARTS --> 
<link rel="canonical" href="https://yourdomain.com/"/> 
<noscript> 
    <meta http-equiv="refresh" content="0;URL=https://yourdomain.com/"> 
</noscript> 
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]--> 
<script type="text/javascript"> 
    var url = "https://yourdomain.com/"; 
    if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer 
    { 
     document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix. 
     var referLink = document.createElement("a"); 
     referLink.href = url; 
     document.body.appendChild(referLink); 
     referLink.click(); 
    } 
    else { window.location.replace(url); } // All other browsers 
</script> 
<!-- Credit goes to http://insider.zone/ --> 
<!-- REDIRECTING ENDS --> 
Cuestiones relacionadas