Recomendado

Las mejores ofertas del Black Friday en Hormiguitas Ahorradoras

martes, 17 de septiembre de 2013

Volver a la versión web desde versión móvil usando cookies en javascript

Después de haber tenido varias peticiones de como poder mostrar la versión web a los que hemos redireccionado a la versión móvil,


os dejo este código para que cuando tengamos a un visitante en la versión movil pueda ir a la versión web y no lo vuelva a redireccionar, esto lo he hecho creando una cookie, si el script lee la cookie te deja ver el contenido de la versión web, si no hay creada la cookie te redireccionará a la versión móvil. Tendremos que reemplazar lo siguiente del código puesto en Detectar moviles y redireccionar .


  1. Reemplazaremos:
  2. {
  3. window.location = "http://www.miwebmovil.com";

  4. }
  5. else
  6. {

  7. }


por el siguiente código:



  1. {
  2.        if(readCookie("nombredelacookie")){
  3.                 } else{  
  4.              window.location = "http://www.miwebmovil.com"; }
  5.             }
  6.             else { }



Como podemos ver en  este código, el que navega a través de un dispositivo móvil, antes de redireccionarlo comprobamos si esiste una cookie llamada "nombredelacookie"(recomiendo cambiar este nombre por uno personalizado), entonces le decimos que si esiste la cokie le mostramos esta página y si no esiste la cookie lo redireccionamos a la versión móvil.

 tambien en la versión web pondremos el siguiente código:



  1.   function readCookie(b){
  2. //creado por joason.com
  3.         var e=b+"=";
  4.         var a=document.cookie.split(";");
  5.         for(var d=0;d<a.length;d++){
  6.         var f=a[d];
  7.         while(f.charAt(0)==" "){
  8.         f=f.substring(1,f.length)
  9. }
  10.       if(f.indexOf(e)==0){
  11.         return f.substring(e.length,f.length)
  12.    }
  13.  }
  14.         return null}; 




Que será el encargado de leer la cookie.

Cuando hayamos tenido una visita desde un dispositivo móvil, lo hayamos redireccionado a la versión móvil y queramos dar la opcción para volver a la versión web y crear la cookie que necesitamos para poder mostrar la versión web con un dispositivo móvil, colocamos el siguiente enlace en la versión móvil:



  1. <a href="http://www.miweb.com" title=" " onClick="javascript:irwebcompleta();">ir a versión web</a>


 
como podemos ver en el mismo enlace tiene dos funciones, una nos envia a la versión web y la segunda llama a la función de javascript "irwebcompleta" que es la que nos creará la cookie.

Para crear la cookie utilizaremos el siguiente código:


  1. function irwebcompleta(a){
  2. //creado por joason.com
  3.     createCookie("nombredelacookie","accepted",a);
  4.  }    
  5. function createCookie(c,d,e){
  6.     if(e){
  7. var b=new Date();    
  8.     b.setTime(b.getTime()+(e*6*60*60*1000));  
  9.    var a="; expires="+b.toGMTString()}
  10.       else{
  11.    var a=""
  12.  }
  13.      document.cookie=c+"="+d+a+"; path=/"
  14.  }



 

este código debe ir donde esté la versión móvil.

Creo que ya está todo, cualquier duda o error de código, hacermelo saber.

Espero que os sea útil.




Un saludo...

9 comentarios:

  1. Hola gracias ante todo por sacar tiempo para ayudar.
    Mi problema es que cuando quiero cambiar desde la web movil a la de escritorio la pagina queda en blanco. Igual se ve cuando entro desde el pc.
    Gracias.

    ResponderEliminar
    Respuestas
    1. Hola Edwin, comprueba que tengas bien el código, de lo contrario te puede generar un bucle la web y por esto te la muestre en blanco.

      Un saludo...

      Eliminar
  2. Hola gracias de antemano, ya usé este código, pero ahora no me detecta que entro desde un móvil y me manda directamente a la versión no móvi. Me la detecta bien hasta que agrego el código para leer la cookie, después de agregar ese código ya no me redirige a la versión movil aun después de haber borrado los cookies de mi navegador. Qué puedo estar haciendo mal?

    ResponderEliminar
    Respuestas
    1. Hola Mario Rosado, al ponerlo por si solo funciona bien, el error lo dá al colocarlo con mas código, de todas formas ya lo he rectificado, copia y pega el código de arriba que ya tiene que irte a la perfección, pues lo tengo funcionando en varias web`s.

      Un saludo...

      Eliminar
    2. Mismo problema, copiado y pegado tal cual... la version sin cookie funcionaba ok... esta no

      Eliminar
    3. Este comentario ha sido eliminado por el autor.

      Eliminar
  3. Espero no te MOLESTES Joason, bueno yo no le he meti estos codigos, tienen que funcionar, no lo dudo, pero yo lo e echo mas SIMPLE, para no tener estos problemas con los scrip por que cuando tiene muchos da CONFLICTO, bueno, entra a mi pagina y veras los resultados sin mucha complicacion, al final de la pagina mobil deje un link para la pagina web, hice copia de index con otro nombre, le quite el codigo que reconoce los exploradores mobiles a la copia, para que no me lo reconociera de nuevo, listo, he navegado del cel y no me da problema y asi como yo lo quiero, me quedo perfecto. suerte y Bendicion, Salu............

    ResponderEliminar
    Respuestas
    1. Hola iguanacos.tk, todo comentario o aportación siempre es bien recibida y de agredecer.
      Cierto es que al meter mucho javascript puede darte dolor de cabeza, he hechado un visitado a tu web y he visto lo que comentas, eso que has hecho es una de las formas mas rapida de solucionarlo, en tu caso está bien porque usas frames, de lo contrario tendrias que duplicar toda la web y cada vez que modifiques una página tienes que modificar tambien su clon, lo cual, aunque de un poco mas de trabajo al pricipio, a la larga puede ser mejor con las cookies.


      Saludos..

      Eliminar
  4. acorte el codigo con un else, esto discrimina la resolucion del dispositivo, espero que les sirva



    if(readCookie("nombredelacookie")){
    } else{
    (screen.width <= 699) {
    document.location = "http://www.miwebmovil.com"; }
    }
    else { }
    function readCookie(b){
    var e=b+"=";
    var a=document.cookie.split(";");
    for(var d=0;d<a.length;d++){
    var f=a[d];
    while(f.charAt(0)==" "){
    f=f.substring(1,f.length)
    }
    if(f.indexOf(e)==0){
    return f.substring(e.length,f.length)
    }

    return null};




    ResponderEliminar