BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
¡Usuario popular!
Suscripción a IA
Para que tu código detecte todos los videos que estén en reproducción y los pause si no están siendo observados, primero debes modificar la lógica en la funciónpuedes hacer que detecte todos los que esten en play y los coloque en pause si no se estan observando?
pauseAllVideos(). En lugar de pausar solo los videos en iframes que están visibles, debes asegurarte de que se verifiquen todos los videos y se pause cualquiera que esté en reproducción.Aquí tienes un enfoque que puedes usar:
### Código Mejorado
JavaScript:
$(document).ready(function() {
const options = {
root: null,
threshold: 0.4
};
let observer3 = new IntersectionObserver((entries) => {
entries.forEach(entry => {
const iframe = entry.target;
if (entry.isIntersecting) {
if (iframe.src !== iframe.getAttribute("data-src")) {
iframe.src = iframe.getAttribute("data-src");
iframe.onload = function() {
const iframeWindow = iframe.contentWindow;
const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
if (video) {
pauseAllVideos(); // Pausa otros videos cuando se empieza este
}
};
}
observer3.unobserve(iframe);
}
});
}, options);
function pauseAllVideos() {
const iframes = document.querySelectorAll(".octumpro[data-src]");
iframes.forEach(iframe => {
const iframeWindow = iframe.contentWindow;
// Asegúrate de chequear si el iframe está listo para evitar errores
if (iframeWindow) {
const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
if (video && !video.paused) {
// Detener solo si no está en la intersección
if (!observer3.observers.includes(iframe)) {
video.pause();
}
}
}
});
}
function observeLogamDivs2() {
document.querySelectorAll('.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('.octumpro[data-src]');
iframes.forEach(iframe => {
if (iframe instanceof Node) {
observer3.observe(iframe);
}
});
}
});
});
});
const targetNode = document.querySelector('.moreinfo'); // Asegúrate de que este selector sea correcto
if (targetNode) {
mutationObserver3.observe(targetNode, {
childList: true,
subtree: true
});
}
// Listener de scroll para pausar videos
window.addEventListener('scroll', pauseAllVideos, { passive: true });
});
### Explicación de los Cambios
1. Detección de Videos en Reproducción: En la función
pauseAllVideos(), se verifica si el video está en reproduccion y si no está siendo observado. Si no está siendo observado, se invoca el método pause().2. Uso de
!observer3.observers.includes(iframe): El código verifica si el iframe es parte de los observados por el IntersectionObserver. Si no lo es, significa que el video no está visible y, por lo tanto, se pausa.3. Listener de Scroll: Se mantiene el listener para asegurar que los videos se pausen al desplazarse por la página.
### Consideraciones
- Manejo de Errores: Siempre es buena práctica manejar posibles errores cuando se accede a
iframe.contentWindow o elementos dentro de él, ya que puede no estar disponible en todo momento.- Rendimiento: Si tienes muchos videos en la página, asegúrate de que esta lógica no afecte el rendimiento. Podrías implementar un enfoque más optimizado, como un debounce en la función de scroll.
Con estos cambios, ahora el código detecta todos los videos en reproducción y los pausa si no están siendo observados. Si necesitas más ayuda o ajustes en tu implementación, ¡házmelo saber!

