BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
Suscripción a IA
Para garantizar que la lógica siempre detecte la inactividad del scroll y que funcione constantemente, puedes reorganizar la forma en que se maneja la detección de scroll y el timeout. Vamos a hacer que el timeout se configure de manera que siga verificando la inactividad sin depender únicamente de los eventos de scroll o de que se encuentre un nuevo div visible.quiero que siempre detecte si el scroll esta inactivo.
me manda la primera alerta y despues no funciona hasta que encuentra el proximo sessim.
puedes hacer que funcione todo el tiempo
### Código Ajustado para Detección Continua
Aquí tienes un código revisado para que la detección de inactividad del scroll se realice de manera continua. Vamos a implementar un mecanismo que revise la inactividad y ejecute la lógica independientemente de la visibilidad de los divs.
JavaScript:
$(document).ready(function() {
let inactivityTimeout; // Timeout para detectar inactividad
let alertedDiv = null; // Para recordar qué div ya ha sido alertado
let lastTimeScrolled = 0; // Marca de tiempo del último scroll
const inactivityDelay = 5000; // Tiempo para considerar inactividad (5 segundos)
// Función que se ejecuta cuando hay inactividad
function executeLogic(lastObservedDiv) {
if (!lastObservedDiv) return; // No hacer nada si no hay div observado
alert("Ejecutando lógica para el div: " + $(lastObservedDiv).attr('datapro')); // Debug
let nextSessimDiv = $(lastObservedDiv).nextAll('.sessim').first(); // Buscar el siguiente div .sessim
let nextID = nextSessimDiv.length ? $(nextSessimDiv).attr('datapro') : 'no hay más sessim';
let allidsessim = $(".sessim").map(function() { return ',' + $(this).attr('datapro'); }).get().join('');
// Realizar la solicitud GET
$.get("../hola.php?goal=1&gatom=" + allidsessim, function(ompred) {
var elementoHTML = document.createElement("html");
elementoHTML.innerHTML = ompred;
var texto = elementoHTML.getElementsByClassName("grammerd")[0];
var wam = texto.getAttribute("dataid");
alert("ID recibido: " + wam); // Debug
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);
if (nextID !== 'no hay más sessim') {
$(".sessim[datapro='" + nextID + "']").after(ompred);
} else {
$(lastObservedDiv).after(ompred);
}
}
});
}
// Detección de inactividad
function checkInactivity() {
if (Date.now() - lastTimeScrolled > inactivityDelay) {
alert("Timeout de inactividad alcanzado"); // Alertar de inactividad
executeLogic(alertedDiv); // Llamar a executeLogic si hay inactividad
}
}
// Configurar el Intersection Observer
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let lastObservedDiv = entry.target; // Div que está visible
if (lastObservedDiv !== alertedDiv) {
alertedDiv = lastObservedDiv; // Marcar como alertado
lastTimeScrolled = Date.now(); // Actualizar última marca de tiempo
}
}
});
});
// Función para observar los divs con clase .sessim
function observeSessimDivs() {
$('.sessim').each(function() {
observer.observe(this); // Iniciar la observación
});
}
observeSessimDivs(); // Llamada inicial
// Uso de MutationObserver para observar cambios en el DOM
const mutationObserver = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'childList') {
observeSessimDivs(); // Re-observar si hay cambios
}
}
});
mutationObserver.observe(document.body, {
childList: true,
subtree: true
});
// Detectar movimiento de scroll
$(window).on('scroll', function() {
lastTimeScrolled = Date.now(); // Actualizar la marca de tiempo en el scroll
});
// Intervalo para verificar la inactividad
setInterval(checkInactivity, 1000); // Verificar cada segundo
});
### Explicación del Código
1. Registro de Inactividad:
- Se utiliza
lastTimeScrolled para registrar la última vez que se detectó movimiento en el scroll.- Cada vez que se detecta un scroll, actualizamos
lastTimeScrolled.2. Chequeo de Inactividad:
- La función
checkInactivity() se ejecuta cada segundo y verifica si ha pasado más tiempo del especificado por inactivityDelay (5 segundos). Si es así, se llama a executeLogic().3. Observer de Intersección:
- Se mantienen las funcionalidades anteriores, alertando cuando un nuevo div es visible y actualizando
alertedDiv.4. Intervalo para Verificación:
- Se utiliza un
setInterval() para llamar a checkInactivity() cada segundo, asegurando que la detección de inactividad sea continua.### Comportamiento Esperado
Con estos cambios, la alerta de inactividad debería aparecer cada vez que no hay actividad de desplazamiento durante 5 segundos, sin estar limitada a solo la primera alerta o la visualización de un nuevo div.
Prueba este código y confirma si funciona como esperas. Si necesitas más cambios o ajustes, házmelo saber.


