Saya perlu mendeteksi apakah pengguna digulir ke bagian bawah halaman. Jika mereka ada di bagian bawah halaman, ketika saya menambahkan konten baru ke bawah, saya akan secara otomatis menggulirnya ke bagian bawah yang baru. Jika tidak ada di bagian bawah, mereka membaca konten sebelumnya lebih tinggi di halaman, jadi saya tidak ingin menggulirkannya secara otomatis karena mereka ingin tetap berada di tempat mereka.
Bagaimana saya bisa mendeteksi jika pengguna digulir ke bagian bawah halaman atau jika mereka menggulir lebih tinggi pada halaman?
javascript
Andrew
sumber
sumber
Jawaban:
Lihat demo
sumber
document.documentElement.scrollTop
sebagai gantiwindow.scrollY
untuk IE. Tidak yakin versi IE mana yang mendukungwindow.scrollY
.Kode yang diperbarui untuk semua dukungan browser utama (termasuk IE10 & IE11)
Masalah dengan jawaban yang diterima saat ini adalah itu
window.scrollY
tidak tersedia di IE.Berikut ini kutipan dari mdn tentang scrollY:
Dan cuplikan yang berfungsi:
Tampilkan cuplikan kode
Catatan untuk mac
Berdasarkan komentar @ Raphaël, ada masalah di mac karena offset kecil.
Kondisi yang diperbarui berikut berfungsi:
sumber
(window.innerHeight + window.pageYOffset) >= document.body.offsetHeight - 2
(window.innerHeight + Math.ceil(window.pageYOffset + 1)) >= document.body.offsetHeight
.Jawaban yang diterima tidak berhasil untuk saya. Ini berhasil:
Jika Anda ingin mendukung browser yang lebih lama (IE9) gunakan alias
window.pageYOffset
yang memiliki dukungan yang sedikit lebih baik.sumber
Saya mencari jawaban tetapi belum menemukan jawaban yang tepat. Berikut ini adalah solusi javascript murni yang berfungsi dengan Firefox, IE, dan Chrome terbaru pada saat jawaban ini:
sumber
((document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight)
alih-alih hanyadocument.body.scrollHeight
untuk menjelaskan kasus-kasus di mana html / tubuh diatur ke tinggi: 100%Ini bekerja
Jika Anda ingin mendukung browser yang lebih lama (IE9) ganti window.scrollY dengan window.pageYOffset
sumber
Saya baru saja mulai melihat ini dan jawaban di sini membantu saya, jadi terima kasih untuk itu. Saya telah sedikit memperluas sehingga kode aman kembali ke IE7:
Semoga ini terbukti bermanfaat bagi seseorang.
Di sini, miliki Fiddle;)
sumber
Jika Anda mengatur
height: 100%
beberapa wadah<div id="wrapper">
, maka kode berikut berfungsi (diuji di Chrome):sumber
Jawaban ini akan memperbaiki kasus tepi, hal ini dikarenakan
pageYOffset
adalahdouble
sementarainnerHeight
danoffsetHeight
yanglong
, jadi ketika browser memberikan info, Anda mungkin pendek pixel. Misalnya: di bagian bawah halaman yang kita milikibenar
window.innerHeight = 10.2
benar
window.pageYOffset = 5.4
benar
document.body.offsetHeight = 15.6
Perhitungan kami kemudian menjadi: 10 + 5,4> = 16 yang mana salah
Untuk memperbaiki ini bisa kita lakukan
Math.ceil
padapageYOffset
nilai.Semoga itu bisa membantu.
sumber
jika Anda suka jquery
sumber
Anda dapat melihat gulir tak terbatas jquery:
http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/
Yang sepertinya melakukan apa yang Anda minta, dengan asumsi Anda bersedia menggunakan perpustakaan jquery dan tidak berharap untuk metode JS murni yang ketat.
sumber
Anehnya tidak ada solusi yang bekerja untuk saya. Saya pikir itu karena saya
css
kacau, danbody
tidak membungkus semua konten saat menggunakanheight: 100%
(belum tahu mengapa). Namun saat mencari solusi saya telah datang dengan sesuatu yang baik ... pada dasarnya sama, tapi mungkin ada baiknya untuk melihat - Saya baru ke pemrograman jadi maaf jika itu melakukan lebih lambat yang sama, kurang didukung atau sesuatu seperti bahwa...sumber
sumber
Kode ini juga berfungsi untuk saya di Firefox dan IE.
sumber
Menggunakan
defaultView
dandocumentElement
dengan cuplikan kode fungsional tertanam:sumber
Anda dapat memeriksa apakah hasil gabungan dari ketinggian jendela dan gulir atas lebih besar daripada tubuh
if (window.innerHeight + window.scrollY >= document.body.scrollHeight) {}
sumber
Saya harus menemukan cara (di Jawa) untuk secara sistematis gulir ke bawah mencari komponen yang saya tidak tahu XPath yang benar (cerita panjang, jadi mainkan saja). Seperti yang baru saja saya nyatakan, saya perlu menggulir ke bawah sambil mencari komponen dan berhenti baik ketika komponen itu ditemukan atau bagian bawah halaman tercapai.
Cuplikan kode berikut mengontrol gulir ke bawah ke bagian bawah halaman:
By the way, jendela dimaksimalkan sebelum potongan kode ini dieksekusi.
sumber
Jawaban yang diterima tidak berhasil untuk saya. Ini berhasil:
sumber
Dua solusi yang saya temukan bekerja untuk saya:
Dan lainnya:
sumber