B
blankito1998
Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
mejor podrias resolver esto?Puedes detectar si un usuario está en un dispositivo móvil o en un PC en JavaScript, utilizando el objeto navigator y la propiedad userAgent. Aquí te dejo un ejemplo:
JavaScript:var esMovil = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); if (esMovil) { // Aquí va código para dispositivos móviles console.log('Usuario en dispositivo móvil'); } else { // Aquí va código para PC console.log('Usuario en PC'); }
En este caso, la variableesMovil
será verdadera si el usuario está en un iPhone, iPad, iPod o dispositivo Android. puedes agregar más dispositivos si es necesario ajustando la expresión regular.
Claro, podrías utilizar una condición para aplicar el manejador de eventos adecuado basado si el usuario está en un dispositivo móvil o un PC. Aquí te dejo un ejemplo de cómo podrías implementarlo:mejor podrias resolver esto?
document.onmouseleave = function(event) {
var elemento = event.target;
if (!elemento.classList.contains("favour1")) {
alert("hola");
}
}
document.ontouchmove = function(event) {
var touch = event.touches[0];
var elemento = document.elementFromPoint(touch.clientX, touch.clientY);
if (!elemento.classList.contains("li")) {
alert("hola");
}
}
quiero que si no se detecta el ontouchmove pase con el otro
var esMovil = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
if (esMovil) {
document.ontouchmove = function(event) {
var touch = event.touches[0];
var elemento = document.elementFromPoint(touch.clientX, touch.clientY);
if (!elemento.classList.contains("li")) {
alert("hola");
}
}
} else {
document.onmouseleave = function(event) {
var elemento = event.target;
if (!elemento.classList.contains("favour1")) {
alert("hola");
}
}
}
esMovil
será verdadera si el usuario está en un iPhone, iPad, iPod o dispositivo Android. En función de esta condición, aplicarás el manejador de eventos correspondiente.porque no funciona con los elementos hijo??Claro, podrías utilizar una condición para aplicar el manejador de eventos adecuado basado si el usuario está en un dispositivo móvil o un PC. Aquí te dejo un ejemplo de cómo podrías implementarlo:
JavaScript:var esMovil = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); if (esMovil) { document.ontouchmove = function(event) { var touch = event.touches[0]; var elemento = document.elementFromPoint(touch.clientX, touch.clientY); if (!elemento.classList.contains("li")) { alert("hola"); } } } else { document.onmouseleave = function(event) { var elemento = event.target; if (!elemento.classList.contains("favour1")) { alert("hola"); } } }
La variableesMovil
será verdadera si el usuario está en un iPhone, iPad, iPod o dispositivo Android. En función de esta condición, aplicarás el manejador de eventos correspondiente.
Si los eventos no se están propagando a los elementos hijos, probablemente se deba al concepto de propagación de eventos en JavaScript. Cuando un evento ocurre en un elemento, ese evento se propaga de los elementos hijos al padre, por defecto. Si no quieres que esto ocurra, debes detener la propagación del evento usando el métodoporque no funciona con los elementos hijo??
event.stopPropagation()
.mouseleave
y ontouchmove
, podría ser que los hijos no estén registrando el evento porque están siendo obstruidos por los elementos padres o porque no tienen la clase "li" o "favour1". document.onmouseleave = function(event) {Si los eventos no se están propagando a los elementos hijos, probablemente se deba al concepto de propagación de eventos en JavaScript. Cuando un evento ocurre en un elemento, ese evento se propaga de los elementos hijos al padre, por defecto. Si no quieres que esto ocurra, debes detener la propagación del evento usando el métodoevent.stopPropagation()
.
Sin embargo, en tu caso me parece que quieres que el evento se aplique también a los elementos hijos. En el caso demouseleave
yontouchmove
, podría ser que los hijos no estén registrando el evento porque están siendo obstruidos por los elementos padres o porque no tienen la clase "li" o "favour1".
Intenta aplicar las clases o los identificadores de eventos específicamente a los elementos hijos y verifica si esto soluciona el problema. Si no es así, podría ser útil ver más de tu código para entender mejor la situación.
Para hacer que funcione el evento en los elementos hijos, puedes comprobar si el elemento tiene un padre con la clase "favour1". Aquí te dejo un ejemplo:document.onmouseleave = function(event) {
var elemento = event.target;
if (!elemento.classList.contains("favour1")) {
alert("hola");
}
}
omo podria hacer aqui para que funcione en los div hijos de favour1??
document.onmouseleave = function(event) {
var elemento = event.target;
while (elemento) {
if (elemento.classList.contains("favour1")) {
return; // Si encuentra un padre con la clase, no mostrará alerta
}
elemento = elemento.parentElement;
}
alert("hola");
}
el div hijo se llama dps2 como haria alli?Para hacer que funcione el evento en los elementos hijos, puedes comprobar si el elemento tiene un padre con la clase "favour1". Aquí te dejo un ejemplo:
JavaScript:document.onmouseleave = function(event) { var elemento = event.target; while (elemento) { if (elemento.classList.contains("favour1")) { return; // Si encuentra un padre con la clase, no mostrará alerta } elemento = elemento.parentElement; } alert("hola"); }
Este código verifica si el elemento tiene la clase "favour1". Si no la tiene, pasa al padre del elemento y verifica de nuevo. Si encuentra un elemento con la clase "favour1", detiene la verificación y no muestra la alerta. Si no encuentra ningún elemento con esa clase, muestra la alerta.
Si el div hijo se llama "dps2" (asumiendo que "dps2" es el valor de su atributoel div hijo se llama dps2 como haria alli?
id
), y quieres que el evento se active cuando el mouse deja este elemento, entonces necesitas verificar específicamente este elemento en tu código JavaScript. Aquí te dejo un ejemplo:document.onmouseleave = function(event) {
var elemento = event.target;
while (elemento) {
if (elemento.id === "dps2") {
alert("hola");
return;
}
elemento = elemento.parentElement;
}
}
id
igual a "dps2". Si es así, se lanza una alerta y se detiene la comprobación. Si no, continúa hasta el elemento raíz del documento.hazlo con class porfaSi el div hijo se llama "dps2" (asumiendo que "dps2" es el valor de su atributoid
), y quieres que el evento se active cuando el mouse deja este elemento, entonces necesitas verificar específicamente este elemento en tu código JavaScript. Aquí te dejo un ejemplo:
JavaScript:document.onmouseleave = function(event) { var elemento = event.target; while (elemento) { if (elemento.id === "dps2") { alert("hola"); return; } elemento = elemento.parentElement; } }
En el código anterior, se verifica si el elemento o alguno de sus elementos padre tieneid
igual a "dps2". Si es así, se lanza una alerta y se detiene la comprobación. Si no, continúa hasta el elemento raíz del documento.
Claro, si "dps2" es una clase en lugar de un id, solo necesitas cambiar la comprobación en el código. Aquí está el ejemplo:hazlo con class porfa
document.onmouseleave = function(event) {
var elemento = event.target;
while (elemento) {
if (elemento.classList.contains("dps2")) {
alert("hola");
return;
}
elemento = elemento.parentElement;
}
}
var elemento = document.getElementById('miElemento');Claro, deberías poder combinar los eventos 'mouseleave' y 'touchmove' en un solo controlador de eventos. Aquí tienes un ejemplo básico:
JavaScript:var elemento = document.getElementById('miElemento'); elemento.onmouseleave = elemento.ontouchmove = function(event) { var touch; // Verificar si es un evento touchMove if(event.touches) { touch = event.touches[0]; elemento = document.elementFromPoint(touch.clientX, touch.clientY); } else { // En caso de que sea un mouseleave elemento = event.target; } if (!elemento.classList.contains("li")) { alert("hola"); } }
En este ejemplo, 'miElemento' sería el ID de tu elemento. Debes reemplazarlo con el ID real de tu elemento. La verificaciónevent.touches
se usa para identificar si el evento es un 'touchmove' o un 'mouseleave'. Si es un 'touchmove', se obtiene el elemento mediantedocument.elementFromPoint
. Si es un 'mouseleave', puedes utilizarevent.target
para obtener el elemento.
Claro, aquí tienes el código HTML básico. Simplemente debes reemplazar 'miElemento' con el ID de tu elemento real en el HTML:var elemento = document.getElementById('miElemento');
elemento.onmouseleave = elemento.ontouchmove = function(event) {
var touch;
// Verificar si es un evento touchMove
if(event.touches) {
touch = event.touches[0];
elemento = document.elementFromPoint(touch.clientX, touch.clientY);
} else {
// En caso de que sea un mouseleave
elemento = event.target;
}
if (!elemento.classList.contains("li")) {
alert("hola");
}
}
podrias darme el codigo html de esto porfa?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Página de prueba</title>
<script src="archivo.js"></script>
</head>
<body>
<div id="miElemento" class="li">
<p>Texto del elemento</p>
<!-- Aquí pueden ir más elementos hijos -->
</div>
</body>
</html>
archivo.js
(o como prefieras nombrarle) y debe ser referenciado en el HTML con la etiqueta <script src="archivo.js"></script>
para que funcione correctamente. como lanzo una funcion al detectar click en un div con js?Claro, aquí tienes el código HTML básico. Simplemente debes reemplazar 'miElemento' con el ID de tu elemento real en el HTML:
HTML:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Página de prueba</title> <script src="archivo.js"></script> </head> <body> <div id="miElemento" class="li"> <p>Texto del elemento</p> <!-- Aquí pueden ir más elementos hijos --> </div> </body> </html>
Ten en cuenta que el código JavaScript debe estar en un archivo separado llamadoarchivo.js
(o como prefieras nombrarle) y debe ser referenciado en el HTML con la etiqueta<script src="archivo.js"></script>
para que funcione correctamente.
Además, asegúrate de que el ID del div en el HTML corresponde con el ID que buscas en el JavaScript. En el ejemplo, he usado el ID 'miElemento' para hacerlo coincidir con tu código JavaScript.
Primero, asegúrate de tener una referencia al div en cuestión. Luego, puedes usar el método addEventListener para escuchar el evento de click. Aquí se muestra cómo podrías hacerlo:como lanzo una funcion al detectar click en un div con js?
document.getElementById("miDiv").addEventListener("click", function() {
console.log("Hiciste click en el div!");
// Aquí puede ir el resto de tu función
});
como funcionaria else aqui??Primero, asegúrate de tener una referencia al div en cuestión. Luego, puedes usar el método addEventListener para escuchar el evento de click. Aquí se muestra cómo podrías hacerlo:
JavaScript:document.getElementById("miDiv").addEventListener("click", function() { console.log("Hiciste click en el div!"); // Aquí puede ir el resto de tu función });
En este ejemplo, reemplaza "miDiv" con el ID del div en el que desees detectar el click. Cuando se haga click en ese div, se ejecutará la función proporcionada y mostrará "Hiciste click en el div!" en la consola. Puedes reemplazar esta función con la que necesites.
El "else" se usaría en conjunto con una declaración "if" para ejecutar código diferente basado en alguna condición. Aquí tienes un ejemplo de cómo podrías usarlo con un evento de clic:como funcionaria else aqui??
document.getElementById("miDiv").addEventListener("click", function() {
var miVariable = false; // Cambia este valor como quieras para probar el código
if (miVariable) {
console.log("Hiciste click en el div y miVariable es verdadera!");
//Aquí puede ir el resto de tu función si miVariable es verdadera
} else {
console.log("Hiciste click en el div pero miVariable es falsa!");
//Aquí puede ir el resto de tu función si miVariable es falsa
}
});
pero solo funciona si cambio a true la variable, podrias hacer que al hacer click en otra parte mande otra alerta?El "else" se usaría en conjunto con una declaración "if" para ejecutar código diferente basado en alguna condición. Aquí tienes un ejemplo de cómo podrías usarlo con un evento de clic:
JavaScript:document.getElementById("miDiv").addEventListener("click", function() { var miVariable = false; // Cambia este valor como quieras para probar el código if (miVariable) { console.log("Hiciste click en el div y miVariable es verdadera!"); //Aquí puede ir el resto de tu función si miVariable es verdadera } else { console.log("Hiciste click en el div pero miVariable es falsa!"); //Aquí puede ir el resto de tu función si miVariable es falsa } });
En este código, si "miVariable" es verdadera, se imprime un mensaje en la consola y se puede ejecutar más código en la sección 'if'. Si "miVariable" es falsa, se imprime un mensaje diferente y se puede ejecutar otro código en la sección 'else'.
Sí, por supuesto, puedes agregar un listener a todo el documento y luego comprobar si el click fue dentro del div o fuera de él. Aquí tienes un ejemplo de cómo hacerlo:pero solo funciona si cambio a true la variable, podrias hacer que al hacer click en otra parte mande otra alerta?
var miDiv = document.getElementById("miDiv");
document.addEventListener("click", function(event) {
if (event.target == miDiv) {
console.log("Hiciste click en el div!");
// Aquí se puede ejecutar tu función cuando se hace clic en el div
} else {
console.log("Hiciste click fuera del div!");
// Aquí se puede ejecutar tu función cuando se hace clic fuera del div
}
});
event.target
es el elemento en el que se hizo clic. Si este elemento es tu div (comparándolo con miDiv
), se ejecuta el código necesario para cuando haces clic en el div. De lo contrario, se ejecuta el código para cuando haces clic en cualquier otro lugar del documento.como podria hacer que esto funcione?Sí, por supuesto, puedes agregar un listener a todo el documento y luego comprobar si el click fue dentro del div o fuera de él. Aquí tienes un ejemplo de cómo hacerlo:
JavaScript:var miDiv = document.getElementById("miDiv"); document.addEventListener("click", function(event) { if (event.target == miDiv) { console.log("Hiciste click en el div!"); // Aquí se puede ejecutar tu función cuando se hace clic en el div } else { console.log("Hiciste click fuera del div!"); // Aquí se puede ejecutar tu función cuando se hace clic fuera del div } });
En este caso,event.target
es el elemento en el que se hizo clic. Si este elemento es tu div (comparándolo conmiDiv
), se ejecuta el código necesario para cuando haces clic en el div. De lo contrario, se ejecuta el código para cuando haces clic en cualquier otro lugar del documento.
Tu código parece estar bastante bien, pero parece que estás intentando establecer el evento ontouchmove dentro del evento de click, lo que podría estar causando problemas. Te recomendaría establecer el evento ontouchmove por separado. Aquí tienes una versión modificada de tu código:como podria hacer que esto funcione?
var miDiv = document.getElementsByClassName("morame2")[0];
document.addEventListener("click", function(event) {
if (event.target == miDiv) {
alert("chaoooo");
// Aquí se puede ejecutar tu función cuando se hace clic en el div
} else {
document.ontouchmove = function(event) {
var touch = event.touches[0];
var elemento = document.elementFromPoint(touch.clientX, touch.clientY);
if (!elemento.classList.contains("morame2") && !elemento.classList.contains("li")) {
document.getElementsByClassName("morame2")[0].setAttribute("onclick", "caters2(1);");
document.getElementsByClassName("dps2")[0].style.display="none";
}
}
}
});
quiero que mande una alerta al hacer click y que cuando mueva el dedo en la pantalla se mande esos comandos con ontouchmove podrias ayudarme porfa
var miDiv = document.getElementsByClassName("morame2")[0];
document.addEventListener("click", function(event) {
if (event.target == miDiv) {
alert("chaoooo");
// Aquí se puede ejecutar tu función cuando se hace clic en el div
}
});
document.ontouchmove = function(event) {
var touch = event.touches[0];
var elemento = document.elementFromPoint(touch.clientX, touch.clientY);
if (!elemento.classList.contains("morame2") && !elemento.classList.contains("li")) {
document.getElementsByClassName("morame2")[0].setAttribute("onclick", "caters2(1);");
document.getElementsByClassName("dps2")[0].style.display="none";
}
};
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?