Jika Anda membuka halaman a dan menggulirnya, maka segarkan halaman tersebut akan disegarkan di tempat Anda meninggalkannya. Ini bagus, namun ini juga terjadi pada halaman yang memiliki lokasi jangkar di url. Contohnya adalah jika Anda mengklik link http://example.com/post/244#comment5
dan menyegarkan halaman setelah melihat sekeliling, Anda tidak akan berada di jangkar dan halaman melompat-lompat. Apakah ada cara untuk mencegahnya dengan javascript? Sehingga tidak peduli apa pun Anda akan selalu menavigasi ke jangkar.
javascript
browser
ThomasReggi
sumber
sumber
Jawaban:
Solusi ini tidak lagi disarankan karena perubahan perilaku browser. Lihat jawaban lainnya.
Pada dasarnya, jika jangkar digunakan, kami mengikat ke acara gulir jendela. Idenya adalah bahwa acara gulir pertama harus termasuk dalam pemosisian ulang otomatis yang dilakukan oleh browser. Ketika ini terjadi, kami melakukan reposisi kami sendiri dan kemudian menghapus acara terikat. Hal ini untuk mencegah gulungan halaman berikutnya mengganggu sistem.
sumber
Di Chrome, meskipun Anda memaksa scrollTop ke 0, ini akan melompat setelah acara scroll pertama.
Anda harus mengikat gulungan ke ini:
Jadi browser tertipu untuk percaya bahwa itu di awal sebelum refresh.
sumber
window.onbeforeunload = function(){ window.scrollTo(0,0); }
Untuk menonaktifkan pemulihan gulir otomatis cukup tambahkan tag ini ke bagian kepala.
Itu tidak didukung oleh IE. Kompatibilitas browser.
sumber
Setelah beberapa kali gagal akhirnya saya berhasil melakukan trik tersebut. anzo benar di sini karena penggunaan
beforeunload
akan membuat halaman melompat ke atas saat pengguna memuat ulang halaman atau mengklik link. Begituunload
juga cara yang jelas untuk melakukan ini.Cara Javascript (Terima kasih ProfNandaa ):
EDIT: 16/07/2015
Masalah lompatan masih ada dengan Firefox bahkan dengan
unload
acara.sumber
beforeunload
solusi karena mencegah melompat ke atas halaman saat memuat ulang dan mengklik tautan.Berikut pendekatan yang lebih umum. Alih-alih mencoba mencegah browser menggulir (atau melompat ke atas sebagaimana tampilannya), saya hanya mengembalikan posisi sebelumnya pada halaman. Yaitu saya merekam y-offset halaman saat ini di localStorage dan menggulir ke posisi ini setelah halaman dimuat.
sumber
Anda bisa meletakkan # di akhir sehingga halaman akan dimuat di bagian atas.
Bekerja di semua browser, seluler dan desktop, karena sangat sederhana.
});
// Ini memuat halaman dengan # di akhir.
sumber
Ini berhasil untuk saya.
sumber
Kamu harus bisa.
Onload, periksa apakah
window.location.hash
memiliki nilai. Jika ya, ambil elemen dengan id yang cocok dengan nilai hash. Temukan posisi elemen (panggilan rekursif ke offsetTop / offsetLeft) lalu teruskan nilai tersebut ke dalamwindow.scrollTo(x, y)
metode.Ini harus menggulir halaman ke elemen yang diinginkan.
sumber