Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
¿Por qué IntersectionObserver v2 no informa el resultado esperado isVisible entre dominios?

Tengo entendido que IntersectionObserver v2 en Chrome debería informar si un iframe es realmente visible y nada lo cubre. Así que creé un caso de prueba simple:

principal.html

 <!doctype html> <html><head></head> <body> <div style="background-color: green; width: 200px; height: 200px; position: absolute;">Test</div> <iframe style="width:100px; height: 100px; border: 0;" scrolling="no" src="https://other.domain/inner.html"></iframe> </body></html>

Y aquí está otro.dominio/interior.html:

 <body style="margin:0"> <div id="test" style="width:100px; height:100px; background-color: purple;"></div> <script> const cb = (entries) => { entries.forEach((entry) => { console.log( 'isIntersecting:', entry.isIntersecting, 'isVisible:', entry.isVisible ); }); }; const observer = new IntersectionObserver(cb, { threshold: 0.0, root: null, trackVisibility: true, delay: 100, }); setTimeout(() => { const el = document.getElementById('test'); observer.observe(el); }, 100); </script> </body>

setTimeout es para simular un script que tarda un tiempo en cargarse en el navegador.

Si setTimeout no está presente, obtengo resultados inconsistentes en la carga de la página.

Algunas veces solo veo:

 isIntersecting: true isVisible: false

Que es lo que esperaría.

Pero la mayoría de las veces veré dos líneas:

 isIntersecting: true isVisible: true isIntersecting: true isVisible: false

Y no entiendo de dónde viene esa primera línea verdadero/verdadero. Supongo que la segunda línea es después del retraso de 100 ms, pero ¿por qué debería devolver isVisible true?

Pero cuando agrego el tiempo de espera. Todo lo que veo es la línea verdadero/verdadero y no puedo hacer que aparezca la otra línea:

 isIntersecting: true isVisible: true

Eso obviamente no está bien. El iframe está cubierto por un gran cuadrado verde.

Curiosamente, si coloco el iframe más abajo en la página y lo desplazo hacia la ventana gráfica, se comporta exactamente como esperaría. Parece suceder solo en la carga inicial o en la actualización.

Cualquier ayuda y comprensión que pueda proporcionar sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!