Apa perbedaan antara JavaScript?
window.location.href = window.location.href
dan
window.location.reload()
fungsi?
sumber
Apa perbedaan antara JavaScript?
window.location.href = window.location.href
dan
window.location.reload()
fungsi?
Jika saya ingat benar, window.location.reload()
muat ulang halaman saat ini dengan data POST, sementara window.location.href=window.location.href
itu tidak termasuk data POST.
Sebagaimana dicatat oleh @ W3Max dalam komentar di bawah, window.location.href=window.location.href
tidak akan memuat ulang halaman jika ada jangkar (#) di URL - Anda harus menggunakan window.location.reload()
dalam hal ini.
Juga, seperti dicatat oleh @Mic di bawah ini, window.location.reload()
mengambil argumen tambahan skipCache
sehingga dengan menggunakan window.location.reload(true)
browser akan melewati cache dan memuat kembali halaman dari server. window.location.reload(false)
akan melakukan yang sebaliknya, dan memuat halaman dari cache jika memungkinkan.
Jika Anda mengatakan
window.location.reload(true)
browser akan melewati cache dan memuat kembali halaman dari server.window.location.reload(false)
akan melakukan yang sebaliknya.Catatan:
default
nilai untukwindow.location.reload()
adalahfalse
sumber
window.location.href = window.location.href
trik.location.reload()
ataulocation.reload(false)
. Untuk melakukan penyegaran lengkap halaman, gunakanlocation.reload(true)
.Perbedaannya adalah itu
tidak akan memuat ulang halaman jika ada hash (#) di URL (dengan atau tanpa sesuatu setelahnya), sedangkan
akan memuat ulang halaman.
sumber
location.href = location.href
begitu saja, tetapi saya hanya memperhatikan perilaku yang tepat dan datang ke SO untuk menyebarkan berita. Cukup gunakanlocation.reload()
saja.window.location.replace(window.location.pathname);
Jika Anda menambahkan boolean true ke ulang
window.location.reload(true)
ia akan memuat dari server.Tidak jelas seberapa didukung boolean ini, W3Org menyebutkan bahwa NS dulu mendukung itu
Mungkin ada perbedaan antara konten window.location.href dan document.URL - setidaknya ada perbedaan antara location.href dan dokumen.lokasi yang tidak standar dan usang. yang ada hubungannya dengan pengalihan, tapi itu benar-benar milenium terakhir.
Untuk keperluan dokumentasi saya akan menggunakan window.location.reload () karena itulah yang ingin Anda lakukan.
sumber
Seperti dikatakan, memodifikasi href ketika ada hash (#) di url tidak akan memuat ulang halaman. Jadi, saya menggunakan ini untuk memuatnya alih-alih ekspresi reguler:
sumber
Datang di pertanyaan ini meneliti beberapa perilaku menyimpang di IE, khususnya IE9, tidak memeriksa versi yang lebih lama. Kelihatannya
menghasilkan penyegaran yang mengosongkan seluruh layar selama satu detik, di mana sebagai
menyegarkan halaman lebih cepat, hampir tanpa terasa.
Melakukan sedikit riset lebih lanjut, dan beberapa eksperimen dengan fiddler, tampaknya
window.location.reload()
akan mem-bypass cache dan memuat ulang dari server terlepas dari apakah Anda lulus boolean dengan itu atau tidak, ini termasuk mendapatkan semua aset Anda (gambar, skrip, style sheet, dll) lagi. Jadi, jika Anda hanya ingin halaman me-refresh HTML, halamanwindow.location = document.URL
akan kembali lebih cepat dan lebih sedikit lalu lintas.Perbedaan perilaku antara browser adalah bahwa ketika IE9 menggunakan metode reload, ia membersihkan halaman yang terlihat dan tampaknya membangunnya kembali dari awal, di mana FF dan chrome menunggu sampai mereka mendapatkan aset baru dan membangunnya kembali jika berbeda.
sumber
Perbedaan dalam Firefox (12.0) adalah bahwa pada halaman yang diberikan dari POST, reload () akan memunculkan peringatan dan melakukan posting ulang, sementara tugas URL akan melakukan GET.
Google Chrome melakukan GET untuk keduanya.
sumber
Menggunakan JSF, saya sekarang mengalami masalah dengan penyegaran setelah sesi kedaluwarsa: PrimeFaces ViewExpiredException setelah pemuatan ulang halaman dan dengan beberapa penyelidikan saya menemukan satu perbedaan di FireFox:
Memanggil
window.location.reload()
berfungsi seperti mengklik ikon segarkan di FF, itu menambah garisCache-Control max-age=0
saat pengaturan
window.location.href
berfungsi seperti menekan ENTER di baris URL, itu tidak mengirim garis itu.Meskipun keduanya dikirim sebagai GET, yang pertama (ulang) memulihkan data sebelumnya dan aplikasi dalam keadaan tidak konsisten.
sumber
Tidak, seharusnya tidak ada. Namun, ada kemungkinan ada perbedaan di beberapa browser, jadi (atau keduanya) mungkin tidak berfungsi dalam beberapa kasus.
sumber
dari pengalaman saya sekitar 3 tahun, saya tidak dapat menemukan perbedaan ...
sunting: ya, seperti yang dikatakan salah satu dari mereka di sini, hanya meneruskan parameter boolean ke window.location.reload () adalah perbedaannya. jika Anda lulus true , maka browser memuat halaman baru, tetapi jika salah , maka versi cache dimuat ...
sumber
Dalam kasus kami, kami hanya ingin memuat ulang halaman dalam tampilan web dan untuk beberapa alasan kami tidak dapat menemukan alasannya! Kami mencoba hampir setiap solusi yang telah ada di web, tetapi macet tanpa memuat ulang menggunakan location.reload () atau solusi alternatif seperti window.location.reload (), location.reload (true), ...!
Inilah solusi sederhana kami:
Cukup gunakan tag <a> dengan nilai atribusi "href" kosong seperti ini:
(dalam beberapa kasus Anda harus menggunakan "return true" pada klik target untuk memicu memuat ulang)
Untuk informasi lebih lanjut, periksa pertanyaan ini: Apakah href kosong valid?
sumber
window.location.href, ini menyelamatkan hidup saya di tampilan web dari Android 5.1. Halaman tidak memuat ulang dengan location.reload () dalam versi ini dari Android.
sumber