Foros del Web » Programando para Internet » Javascript »

Error JavaScript en Android

Estas en el tema de Error JavaScript en Android en el foro de Javascript en Foros del Web. Buenas gente. Verán, estoy creando una web con javascript Poo, pero tengo problemas en que mi tableta con android no reconoce las llamadas a los ...
  #1 (permalink)  
Antiguo 09/10/2017, 22:45
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Error JavaScript en Android

Buenas gente.

Verán, estoy creando una web con javascript Poo, pero tengo problemas en que mi tableta con android no reconoce las llamadas a los metodos.

Aqui el codigo de prueba que estoy usando:
Código Javascript:
Ver original
  1. class SiteMenu{
  2.     constructor(){
  3.         this.visible = false;
  4.         return this;
  5.     }
  6.     show(ms){
  7.         if(this.visible){
  8.             $("#menu").fadeOut(ms, this.status());
  9.         }
  10.         $("#menu").fadeIn(ms, this.status());
  11.     }
  12.     status(){
  13.         this.visible = !this.visible;
  14.     }
  15. }
  16. var Menu = new SiteMenu();
Y este elemento llama al metodo:
Código HTML:
Ver original
  1. <div class='m-s-b' onclick="Menu.show(200);">MENU</div>

He intentado colocando un alert al comianzo del metodo para ver si era otro el problema, pero nada.... simplemente no reacciona. :/

El javascript esta activado en mi tableta.

¿alguna ayuda?
  #2 (permalink)  
Antiguo 10/10/2017, 01:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Error JavaScript en Android

No puedes pretender trabajar con un método con JavaScript inline de esa forma. Debes asociar el evento al elemento desde el código y ejecutar el método en cuestión.

Código Javascript:
Ver original
  1. /* Por aquí arriba deberían estar declarados tu objeto y su instancia */
  2.  
  3. document.addEventListener("click", function(event){
  4.     if (event.target.className == "m-s-b"){
  5.         Menu.show(200);
  6.     }
  7. }, false);

Lo anterior dispara una llamada de retorno cuando se produzca el evento click en el documento. En ella, se verifica si la clase del elemento directamente afectado por el elemento es igual a "m-s-b"; de ser así, se procede a ejecutar al método en cuestión.

__________________
«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
  #3 (permalink)  
Antiguo 10/10/2017, 07:58
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Error JavaScript en Android

el uso de ES6 aun no es recomendado directamente sobre archivos JS al 100% ya que no hay soporte en muchos navegadores.

Si deseas usarlo te recomiendo implementes TypeScript para que te genere el JS correspondiente y compatible con todos los navegadores, yo tengo rato utilizándolo y me ha ido bien.

-------------
Agrego:

Tu alternativa si no quieres hacer uso de TypeScript es escribir tu código directamente en ES5

que el equivalente a tu código seria

Código Javascript:
Ver original
  1. var SiteMenu = (function () {
  2.     function SiteMenu() {
  3.         this.visible = false;
  4.         return this;
  5.     }
  6.     SiteMenu.prototype.show = function (ms) {
  7.         if (this.visible) {
  8.             $("#menu").fadeOut(ms, this.status());
  9.         }
  10.         $("#menu").fadeIn(ms, this.status());
  11.     };
  12.     SiteMenu.prototype.status = function () {
  13.         this.visible = !this.visible;
  14.     };
  15.     return SiteMenu;
  16. }());
  17. var Menu = new SiteMenu();

Última edición por ArturoGallegos; 10/10/2017 a las 08:09

Etiquetas: android, java
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 19:28.