2018 için cevap :
Bunun gibi şeyler yapmanın en iyi yolu Kesişim Gözlemci API'sını kullanmaktır .
Kesişim Gözlemcisi API'si, bir hedef öğenin bir üst öğe veya üst düzey bir belgenin görünüm alanı ile kesişimindeki değişiklikleri eşzamansız olarak gözlemlemek için bir yol sağlar.
Tarihsel olarak, bir öğenin görünürlüğünü veya iki öğenin birbiriyle ilişkili göreli görünürlüğünü tespit etmek, çözümlerin güvenilir olmadığı ve tarayıcının ve kullanıcının eriştiği sitelerin halsizleşmesine neden olmaya zorlandığı zor bir iş olmuştur. Ne yazık ki, web olgunlaştıkça, bu tür bilgilere duyulan ihtiyaç artmıştır. Kavşak bilgisine aşağıdakiler gibi birçok nedenden dolayı ihtiyaç duyulur:
- Bir sayfa olarak görüntülerin veya diğer içeriklerin tembel olarak yüklenmesi kaydırma yapar.
- Siz kaydırdıkça daha fazla içeriğin yüklendiği ve oluşturulduğu "sonsuz kaydırma" web sitelerinin uygulanması, böylece kullanıcının sayfalar arasında gezinmesi gerekmez.
- Reklam gelirlerini hesaplamak için reklamların görünürlüğünün raporlanması.
- Kullanıcının sonucu görüp görmeyeceğine göre görevlerin veya animasyon işlemlerinin gerçekleştirilip gerçekleştirilmeyeceğine karar verme.
Geçmişte kavşak algılamanın uygulanması, etkilenen her öğe için gerekli bilgileri oluşturmak üzere olay işleyicileri ve döngüler çağıran yöntemleri Element.getBoundingClientRect () içeriyordu. Tüm bu kod ana iş parçacığında çalıştığından, bunlardan biri bile performans sorunlarına neden olabilir. Bir site bu testlerle yüklendiğinde, işler çirkinleşebilir.
Aşağıdaki kod örneğine bakın:
var options = {
root: document.querySelector('#scrollArea'),
rootMargin: '0px',
threshold: 1.0
}
var observer = new IntersectionObserver(callback, options);
var target = document.querySelector('#listItem');
observer.observe(target);
Çoğu modern tarayıcı IntersectionObserver'ı destekler , ancak geriye dönük uyumluluk için çoklu dolguyu kullanmalısınız .
element
vedocument.body
sadece örneklerdir). Ayrıntılar için howtocreate.co.uk/tutorials/javascript/browserwindow adresine bakın.