Bagaimana saya bisa mendapatkan dan mengatur posisi gulir halaman web saat ini?
Saya memiliki formulir panjang yang perlu di-refresh berdasarkan tindakan / masukan pengguna. Ketika ini terjadi, halaman disetel ulang ke paling atas, yang mengganggu pengguna, karena mereka harus menggulir kembali ke bawah ke titik mereka berada.
Jika saya dapat menangkap posisi gulir saat ini (dalam input tersembunyi) sebelum halaman dimuat ulang, saya dapat mengaturnya kembali setelah dimuat ulang.
javascript
html
xyz
sumber
sumber
Jawaban:
Anda sedang mencari
document.documentElement.scrollTop
properti.sumber
getScrollingPosition()
untuk menyimpan nilai dalam variabel tersembunyi. Kemudian di html dari halaman yang baru saya gunakan<body onLoad="window.scrollTo(x,y)
, di mana x dan y adalah nilai-nilai dari nilai tersembunyi!document.documentElement.scrollTop
selalu mengembalikan 0.document.body.scrollTop
, bagaimanapun, tampaknya berfungsi. Satu Firefox di Ubuntu, di sisi lain, kebalikannya benar - Anda mendapatkan 0 denganbody
dan jumlah yang benar dengandocumentElement
. Tahu apa yang memberi?scrollTop
properti tidak berfungsi di semua browser. Periksawindow.pageXOffset
danwindow.pageYOffset
untuk hasil yang lebih baik.Jawaban yang diterima saat ini salah -
document.documentElement.scrollTop
selalu mengembalikan 0 di Chrome. Ini karena WebKit digunakanbody
untuk melacak pengguliran, sedangkan Firefox dan IE digunakanhtml
.Untuk mendapatkan posisi saat ini, Anda menginginkan:
Anda dapat mengatur posisi saat ini ke 1000px ke bawah halaman seperti ini:
Atau, menggunakan jQuery (buat animasi saat Anda melakukannya!):
sumber
window.pageYOffset
lebih bersih jika Anda menggunakanwindow.scrollBy()
atauwindow.scrollTo()
metode.Ada beberapa ketidakkonsistenan dalam cara browser mengekspos koordinat pengguliran jendela saat ini. Google Chrome di Mac dan iOS sepertinya selalu kembali
0
saat menggunakandocument.documentElement.scrollTop
atau jQuery$(window).scrollTop()
.Namun, ini bekerja secara konsisten dengan:
sumber
Saya menggunakan solusi penyimpanan lokal HTML5 ... Semua tautan saya memanggil fungsi yang mengatur ini sebelum mengubah window.location:
dan setiap halaman memiliki ini di onLoad tubuh:
sumber