Foros del Web » Programando para Internet » Javascript »

Local storage no funciona en móviles

Estas en el tema de Local storage no funciona en móviles en el foro de Javascript en Foros del Web. Hola. ¿Me podéis decir por qué esta solución de Local storage no me funciona en ningún móvil? Un div (caja) debe mostrarse sólo una vez ...
  #1 (permalink)  
Antiguo 02/07/2016, 13:46
 
Fecha de Ingreso: noviembre-2005
Mensajes: 887
Antigüedad: 17 años
Puntos: 8
Local storage no funciona en móviles

Hola.

¿Me podéis decir por qué esta solución de Local storage no me funciona en ningún móvil?

Un div (caja) debe mostrarse sólo una vez a lo largo de la web se entre por dónde se entre en ella:

Código:
  <div id="caja">
    <p>Aquí se muestra un mensaje.</p>
  </div>
Este es el javascript:

Código:
 <script>
window.onload=function(){
(function() {
    var visited = localStorage.getItem('visited');
    if (!visited) {
        document.getElementById("caja").style.display = "block";
        localStorage.setItem('visited', true);
    }
})();
}

</script>
El funcionamiento es absolutamente perfecto en navegadores en ordenador y tablets. Pero cuando te vas a móviles, no funciona. La caja se muestra una y otra vez.

He probado Android, IPhone y Windows Mobile.

¿Sabéis por qué?
  #2 (permalink)  
Antiguo 02/07/2016, 14:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 14 años, 5 meses
Puntos: 1011
Respuesta: Local storage no funciona en móviles

Para tener esa compattibilidad has de usar cookies https://developer.mozilla.org/es/doc...Almacenamiento
  #3 (permalink)  
Antiguo 02/07/2016, 14:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 887
Antigüedad: 17 años
Puntos: 8
Respuesta: Local storage no funciona en móviles

No entiendo la respuesta. ¿Me lo aclaras? ¿Insertar código en el script para que sea compatible con los navegadores móviles?
  #4 (permalink)  
Antiguo 02/07/2016, 15:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.546
Antigüedad: 11 años
Puntos: 972
Respuesta: Local storage no funciona en móviles

Checa la sección de compatibilidad del enlace que te ha dado IsaBelM e impleméntalo. El almacenamiento local aún no está disponible en todos los navegadores.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 02/07/2016, 15:14
 
Fecha de Ingreso: noviembre-2005
Mensajes: 887
Antigüedad: 17 años
Puntos: 8
Respuesta: Local storage no funciona en móviles

Según ese enlace parece que la compatibilidad de móviles es desconocida.
  #6 (permalink)  
Antiguo 02/07/2016, 16:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.546
Antigüedad: 11 años
Puntos: 972
Respuesta: Local storage no funciona en móviles

Precisamente por eso debes de implementar el script que se muestra en la sección mencionada.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 03/07/2016, 03:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 887
Antigüedad: 17 años
Puntos: 8
Respuesta: Local storage no funciona en móviles

He solucionado la cuestión con este otro script:

Código:
window.onload=function(){
(function() {
    var visited = localStorage.getItem('visited');
    if (!visited) {
        document.getElementById("caja").style.display = 'block';
        localStorage.setItem('visited', true);
    }
})();
}
Inserta el elemento en LocalStorage y todo funciona correctamente.

Pero me gustaría comentar un tema y entenderlo.

El script sólo funciona si pones el html así:

Código:
<div style="display:none" id="caja">
    <p>Aquí se muestra un mensaje.</p>
  </div>
Porque si lo pones como sigue, y luego añades el display: none al archivo css, ya no funciona.

Código:
<div id="caja">
    <p>Aquí se muestra un mensaje.</p>
  </div>
De lo cual debo sacar la conclusión de que es necesaria la presencia del estilo en el html para que esto funcione:

Código:
document.getElementById("caja").style.display = 'block';
Como comprenderéis, soy neófito en estos temas y me gustaría comprender cómo funciona este último fragmento de código. Veo que lo que hace es sustituir el display del html por el indicado "block".

Me gustaría saber si es posible sustituir esta línea por otra que haga lo mismo y que permita eliminar el estilo del html (<div style="display:none" id="caja">), por tema de purismo en la inclusión de elementos de estilo en el código.

Un saludo y gracias por vuestra ayuda.
  #8 (permalink)  
Antiguo 03/07/2016, 03:46
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 8 años, 8 meses
Puntos: 67
Respuesta: Local storage no funciona en móviles

Si no quieres agregar display:none en tu html puedes agregarlo al id #caja o añadir una clase .caja y en tu hoja de estilos añadirle el display:none.

Saludos.
  #9 (permalink)  
Antiguo 03/07/2016, 04:35
 
Fecha de Ingreso: noviembre-2005
Mensajes: 887
Antigüedad: 17 años
Puntos: 8
Respuesta: Local storage no funciona en móviles

Hola MaNuX0218.

Ya he explicado que eso no funciona. Me estás diciendo que haga lo que ya he probado.

Si quito el estilo del html y lo pongo en el css, parece como si el javascript no pudiera formar el estilo en el div caja.

????????

Etiquetas: funcion, local, storage
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:31.