BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
Suscripción a IA
Claro, vamos a corregir y simplificar un poco tu código para asegurarnos de que la función$(document).ready(function() {
let isScrolling;
let timeout;
// Función que se ejecuta si el scroll está inactivo durante 10 segundos
function executeLogic() {
let allidsessim = $(".sessim").map(function() {
return ',' + $(this).attr('datapro');
}).get().join('');
$.get("../hola.php?goal=1&gatom=" + allidsessim, function(ompred) {
var elementoHTML = document.createElement("html");
elementoHTML.innerHTML = ompred;
var texto = elementoHTML.getElementsByClassName("grammerd")[0];
alert("hola");
if (texto) {
var wam = texto.getAttribute("dataid");
let $buscarenestap = allidsessim + ',';
let $busquedap = ',' + wam + ',';
if ($buscarenestap && !$buscarenestap.includes($busquedap)) {
var idpro = document.getElementsByClassName("moreinfo")[0].getAttribute("dataid");
var numa = parseInt(idpro);
numa += 1;
document.getElementsByClassName("moreinfo")[0].setAttribute("dataid", numa);
// Lógica para insertar el nuevo contenido
$(".sessim").last().after(ompred); // Ajusta según donde desees insertar el contenido
}
}
});
}
// Establecemos un interval que chequea el estado del scroll
setInterval(function() {
if (!isScrolling) {
// No se ha movido el scroll en 10 segundos
timeout = setTimeout(() => {
clearTimeout(timeout); // reinicio de conteo 10s
executeLogic(); // Llama a la función si está inactivo durante 10 segundos
}, 10000);
} else {
clearTimeout(timeout); // Reinicia el temporizador si se detecta movimiento
}
}, 1000); // Cada 1 segundo, verificar el estado
// Detectar eventos de scroll
$(window).on('scroll', function() {
isScrolling = true; // Cambiamos el estado a que está en movimiento
clearTimeout(timeout); // Limpiamos el timeout anterior
// Establecemos un timeout para detectar que el scroll se ha detenido
setTimeout(function() {
isScrolling = false; // Cambiamos el estado a inactivo
}, 66); // 66 ms (aproximadamente 15 fps) para minimizar percepción de lag
});
});
puedes hacerlo funcionar
executeLogic() se ejecute una vez cuando el usuario no haya desplazado el scroll durante 10 segundos y reinicie el conteo correctamente.Aquí está la versión revisada:
### Código Corregido
JavaScript:
$(document).ready(function() {
let isScrolling = false; // Estado de scroll
let timeout; // Variable para el timeout
// Función que se ejecuta si el scroll está inactivo durante 10 segundos
function executeLogic() {
let allidsessim = $(".sessim").map(function() {
return ',' + $(this).attr('datapro');
}).get().join('');
$.get("../hola.php?goal=1&gatom=" + allidsessim, function(ompred) {
var elementoHTML = document.createElement("html");
elementoHTML.innerHTML = ompred;
var texto = elementoHTML.getElementsByClassName("grammerd")[0];
alert("hola"); // Verifica que se llame la función
if (texto) {
var wam = texto.getAttribute("dataid");
let $buscarenestap = allidsessim + ',';
let $busquedap = ',' + wam + ',';
if ($buscarenestap && !$buscarenestap.includes($busquedap)) {
var idpro = document.getElementsByClassName("moreinfo")[0].getAttribute("dataid");
var numa = parseInt(idpro);
numa += 1;
document.getElementsByClassName("moreinfo")[0].setAttribute("dataid", numa);
// Lógica para insertar el nuevo contenido
$(".sessim").last().after(ompred); // Ajusta según donde desees insertar el contenido
}
}
});
}
// Detectar eventos de scroll
$(window).on('scroll', function() {
isScrolling = true; // Cambiamos el estado a que está en movimiento
clearTimeout(timeout); // Limpiamos el timeout antiguo
// Establecemos un timeout para detectar que el scroll se ha detenido
timeout = setTimeout(function() {
isScrolling = false; // Cambiamos el estado a inactivo
// Iniciamos un timeout que llamará a `executeLogic` después de 10 segundos de inactividad
setTimeout(function() {
executeLogic(); // Llama a la función si está inactivo durante 10 segundos
}, 10000);
}, 66); // 66 ms (aproximadamente 15 fps) para minimizar percepción de lag
});
});
### Explicación de las Modificaciones
1. Variable
isScrolling: Se inicializa en false y se utiliza para verificar si el usuario está desplazándose en la página.2. Temporalizador de Scroll:
- Se configura un
setTimeout que se activa cuando el scroll se detiene para cambiar isScrolling a false.- Se llama a
executeLogic() solo después de 10 segundos de inactividad, directamente desde el timeout. Esto evita la complejidad del setInterval, ya que solo se necesita un seguimiento del evento de scroll.3. Eliminación de
setInterval: Se ha eliminado el setInterval desde el código original porque no es necesario realizar verificaciones de estado en intervalos regulares cuando puedes manejarlo a través de eventos de scroll.### Comportamiento Esperado
- Función
executeLogic()se ejecutará una vez, cada vez que el usuario no se desplace durante 10 segundos. - Cada vez que el usuario vuelve a desplazarse, el conteo de 10 segundos se reiniciará.
Con estas modificaciones, tu código debería funcionar como esperas. Prueba esto y verifica si la función se ejecuta correctamente cuando el scroll está inactivo durante los 10 segundos.


