B
blankito1998
Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
loadTimeouts = setInterval(() => {Parece que el problema está relacionado con la lógica que manejas al limpiar elsrcde otros iframes y al mostrar los elementos lagger. Aquí hay algunos pasos que puedes seguir para asegurarte de que el comportamiento funcione como esperas al alternar entre varios iframes:
### Revisión y Ajustes
1. Revisar el flujo de manejo de Iframes: Una forma mejor de manejar la eliminación y visualización de los laggers puede ser asegurarte de que, cuando un iframe se convierte en visible, todos los demás se configuren correctamente.
2. Modificar la Información del Lagger: Cuando ocultes un iframe, quita elsrcde la fuente respectiva de forma que los laggers se muestren correctamente al salir de la visualización.
3. Gestión de Estados: Almacena y mide los estados visuales de los iframes para asegurarte que se actué en consecuencia.
Aquí tienes un código modificado que maneja estos casos:
JavaScript:$(document).ready(function() { const options = { root: null, threshold: 0.6 }; let observer3 = new IntersectionObserver((entries) => { entries.forEach(entry => { const dataId = entry.target.getAttribute('dataid'); const iframe = entry.target; if (entry.isIntersecting) { // Asignar src si está vacío if (!iframe.src || iframe.src === "") { iframe.src = iframe.getAttribute("data-src"); iframe.onload = function() { $(".laggs[dataid='" + dataId + "']").hide(); attachScale3ClickListener(iframe, dataId); }; } // Limpiar src de otros iframes document.querySelectorAll(".sessim .octumpro[data-src]").forEach(otherIframe => { const otherIframeDataId = otherIframe.getAttribute("dataid"); // Ocultar lagger y limpiar src para iframes no visibles if (otherIframeDataId !== dataId) { otherIframe.removeAttribute('src'); // Eliminar el src de otros iframes $(".laggs[dataid='" + otherIframeDataId + "']").show(); // Mostrar el lagger correspondiente } }); } else { // Cuando el iframe deja de ser visible, mostrar su lagger $(".laggs[dataid='" + dataId + "']").show(); } }); }, options); function attachScale3ClickListener(iframe, dataId) { const iframeDocument = iframe.contentDocument || iframe.contentWindow.document; // Usar delegación de eventos para el botón .scale3 en el iframe $(iframeDocument).on('click', '.scale3', function() { $("subody").attr("jores", dataId); }); } function observeLogamDivs2() { document.querySelectorAll('.sessim .octumpro[data-src]').forEach(elem => { if (elem instanceof Node) { observer3.observe(elem); } }); } observeLogamDivs2(); // Manejar el evento de salida de pantalla completa document.addEventListener('fullscreenchange', (event) => { if (!document.fullscreenElement) { // Vuelve a cargar el src para los iframes visibles document.querySelectorAll(".sessim .octumpro[data-src]").forEach(iframe => { const dataId = iframe.getAttribute('dataid'); $("subody").removeAttr("jores"); $(".laggs[dataid='" + dataId + "']").hide(); }); } }); });
### Cambios Realizados
- Lógica Simplificada:
- Ahora, cuando un iframe está visible y se asigna elsrc, ocultamos el lagger para el iframe visible y mostramos el lagger para los iframes que no son visibles (oculares).
- Cuando el iframe deja de ser visible, se muestra su lagger correspondiente.
### Notas Importantes
1. Revisar Cómo Manejas los Estados de Visibilidad: Si hay otros estados de visualización en juego, asegúrate de manejar estos estados correctamente al aplicar lógica adicional.
2. Depuración: Incluyeconsole.logen diferentes partes para entender qué condiciones se están cumpliendo y cuándo se están disparando los cambios en el DOM.
3. CSS: Asegúrate de que no haya reglas CSS que puedan interferir con la visibilidad cuando se cambien los métodos de.show()y.hide().
Con estas modificaciones y explicaciones, deberías poder solucionar el problema que enfrentas. Si los problemas persisten o si hay más detalles que puedas proporcionar, ¡no dudes en preguntar!
document.querySelectorAll(".sessim .octumpro[data-src]").forEach(otherIframe => {
const otherIframeDataId = otherIframe.getAttribute("dataid");
const currentJores = $("subody[jores]").attr("jores");
// Eliminar src y agregar lagger si jores está presente
if (currentJores) {
if (otherIframeDataId !== currentJores) {
const mehoContainer = $(".laggs[dataid='" + otherIframeDataId + "']");
const isHiddenBefore = window.getComputedStyle(mehoContainer[0]).display === 'none';
// Mostrar el lagger
// Verificar si sigue oculto después de mostrarse (esto es probable que no suceda)
if (isHiddenBefore) {
mehoContainer.css("display", "flex");
alert(otherIframeDataId); // Solo muestra alerta si estaba oculto antes de mostrarlo
}
}
} else { // Si no está presente, eliminar el src y agregar el lagger a otros iframes
if (otherIframeDataId !== dataId) {
const mehoContainer = $(".laggs[dataid='" + otherIframeDataId + "']");
const isHiddenBefore = window.getComputedStyle(mehoContainer[0]).display === 'none';
// Mostrar el lagger
// Verificar si sigue oculto después de mostrarse
if (isHiddenBefore && otherIframeDataId !== dataId) {
mehoContainer.css("display", "flex");
alert(otherIframeDataId); // Solo muestra alerta si estaba oculto antes de mostrarlo
}
}
}
});
}, 300);
porque se coloca el lagger em el iframe que estoy observando?


