La razón por la que el
src de tu iframe no se restablece automáticamente al quitar la pantalla grande podría estar relacionada con el hecho de que el evento
onload no se activa nuevamente después de salir del modo de pantalla completa.
Aquí tienes una solución que te permitirá asegurarte de que el
src se restablezca adecuadamente al salir de pantalla grande y eliminar cualquier mensaje de carga si es necesario.
### Modificaciones para Manejar Salir de Pantalla Completa
1. Escuchar el evento de cambio de pantalla completa para reutilizar el
onload o un nuevo evento para manejar la restauración del
src.
2. Asegúrate de controlar la visibilidad del iframe y manejar los elementos de carga de manera adecuada.
### Código Modificado:
Aquí tienes un código con estos cambios:
JavaScript:
$(document).ready(function() {
const options = {
root: null,
threshold: 0.6
};
let loadTimeouts;
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 + "']").remove();
attachScale3ClickListener(iframe, dataId);
};
}
// Controlar y limpiar src de otros iframes
loadTimeouts = setInterval(() => {
const iframes = document.querySelectorAll(".sessim .octumpro[data-src]");
iframes.forEach(otherIframe => {
const otherIframeDataId = otherIframe.getAttribute("dataid");
if (otherIframeDataId !== dataId) {
// Comprobar si no existe el elemento .laggs con el dataid correspondiente
if ($(".laggs[dataid='" + otherIframeDataId + "']").length === 0) {
$(otherIframe).removeAttr('src'); // Eliminar el src de otros iframes
// Prepend para agregar mensaje de carga
$(".freimps" + otherIframeDataId).prepend(
'<div class="laggs" dataid="' + otherIframeDataId + '" style="margin-left:10px;display:flex;justify-content:center;justify-items:center;align-content:center;align-items:center;background:#000000;width:calc(100% - 20px);height:100%;float:left;z-index:1;position:absolute;"><img src="../wpp/img/loading-25.gif" loading="lazy" style="width:20px;height:20px;" /></div>'
);
}
}
});
}, 300);
} else {
clearInterval(loadTimeouts);
}
});
}, 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() {
console.log('Clic en el botón .scale3 dentro del iframe con dataid:', dataId);
// Aquí puedes agregar la lógica que quieras
});
}
function observeLogamDivs2() {
document.querySelectorAll('.sessim .octumpro[data-src]').forEach(elem => {
if (elem instanceof Node) {
observer3.observe(elem);
}
});
}
observeLogamDivs2();
let mutationObserver3 = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1) {
const iframes = node.querySelectorAll('.sessim .octumpro[data-src]');
iframes.forEach(iframe => {
if (iframe instanceof Node) {
observer3.observe(iframe);
// Asignar el src nuevamente si es necesario al volver a observar
if (!iframe.src || iframe.src === "") {
iframe.src = iframe.getAttribute("data-src");
iframe.onload = function() {
$(".laggs[dataid='" + iframe.getAttribute('dataid') + "']").remove();
attachScale3ClickListener(iframe, iframe.getAttribute('dataid'));
};
}
}
});
}
});
});
});
const targetNode = document.querySelector('.moreinfo');
if (targetNode) {
mutationObserver3.observe(targetNode, {
childList: true,
subtree: true
});
}
// Manejar el evento de salida de pantalla completa
document.addEventListener('fullscreenchange', (event) => {
if (!document.fullscreenElement) {
// Vuelve a cargar el src, si es necesario, para los iframes visibles
document.querySelectorAll(".sessim .octumpro[data-src]").forEach(iframe => {
const dataId = iframe.getAttribute('dataid');
if (iframe.src === "") { // Verifica solo si el src está vacío
iframe.src = iframe.getAttribute("data-src");
$(".laggs[dataid='" + dataId + "']").remove();
}
});
}
});
});
### Cambios Realizados:
1.
Función attachScale3ClickListener: Se movió la lógica para agregar el listener al botón
.scale3 a una función separada para evitar la repetición.
2.
Evento fullscreenchange: Se agregó un listener para el evento
fullscreenchange. Este evento se activa cuando se entra o se sale del modo de pantalla completa. En caso de salir, se verifica si el
src del iframe está vacío y se establece.
### Consideraciones:
- Asegúrate de que el iframe y el documento principal sean de la misma fuente (mismo dominio) para que este código funcione correctamente.
- Revisa que el botón con la clase
.scale3 esté presente y sea accesible al momento de agregar el listener.
Prueba estas modificaciones y si necesitas más ayuda, ¡estaré encantado de seguir asistiendo!
$(document).ready(function() {
const options = {
root: null,
threshold: 0.6
};
let loadTimeouts;
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 + "']").remove();
attachScale3ClickListener(iframe, dataId);
};
}
// Controlar y limpiar src de otros iframes
loadTimeouts = setInterval(() => {
const iframes = document.querySelectorAll(".sessim .octumpro[data-src]");
iframes.forEach(otherIframe => {
const otherIframeDataId = otherIframe.getAttribute("dataid");
if (otherIframeDataId !== dataId) {
// Comprobar si no existe el elemento .laggs con el dataid correspondiente
if ($(".laggs[dataid='" + otherIframeDataId + "']").length === 0) {
$(otherIframe).removeAttr('src'); // Eliminar el src de otros iframes
// Prepend para agregar mensaje de carga
$(".freimps" + otherIframeDataId).prepend(
'<div class="laggs" dataid="' + otherIframeDataId + '" style="margin-left:10px;display:flex;justify-content:center;justify-items:center;align-content:center;align-items:center;background:#000000;width:calc(100% - 20px);height:100%;float:left;z-index:1;position:absolute;"><img src="../wpp/img/loading-25.gif" loading="lazy" style="width:20px;height:20px;" /></div>'
);
}
}
});
}, 300);
} else {
clearInterval(loadTimeouts);
}
});
}, 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);
// Aquí puedes agregar la lógica que quieras
});
}
function observeLogamDivs2() {
document.querySelectorAll('.sessim .octumpro[data-src]').forEach(elem => {
if (elem instanceof Node) {
observer3.observe(elem);
}
});
}
observeLogamDivs2();
let mutationObserver3 = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1) {
const iframes = node.querySelectorAll('.sessim .octumpro[data-src]');
iframes.forEach(iframe => {
if (iframe instanceof Node) {
observer3.observe(iframe);
// Asignar el src nuevamente si es necesario al volver a observar
if (!iframe.src || iframe.src === "") {
iframe.src = iframe.getAttribute("data-src");
iframe.onload = function() {
$(".laggs[dataid='" + iframe.getAttribute('dataid') + "']").remove();
attachScale3ClickListener(iframe, iframe.getAttribute('dataid'));
};
}
}
});
}
});
});
});
const targetNode = document.querySelector('.moreinfo');
if (targetNode) {
mutationObserver3.observe(targetNode, {
childList: true,
subtree: true
});
}
// Manejar el evento de salida de pantalla completa
document.addEventListener('fullscreenchange', (event) => {
if (!document.fullscreenElement) {
// Vuelve a cargar el src, si es necesario, para los iframes visibles
document.querySelectorAll(".sessim .octumpro[data-src]").forEach(iframe => {
const dataId = iframe.getAttribute('dataid');
if (iframe.src === "") { // Verifica solo si el src está vacío
iframe.src = iframe.getAttribute("data-src");
$(".laggs[dataid='" + dataId + "']").remove();
}
});
}
});
});
oks ahora aqui haz que el iframe que tenga el mismo id de jores se quede con el src, que no lo elimine