Yanıtlar:
Doğru hatırlıyorsam, window.location.reload()
POST verilerini içermezken geçerli sayfayı POST verileriyle yeniden yükler window.location.href=window.location.href
.
Aşağıdaki yorumlarda @ W3Max tarafından belirtildiği gibi, URL'de window.location.href=window.location.href
bir çapa (#) varsa sayfayı yeniden yüklemez window.location.reload()
- Bu durumda kullanmalısınız .
Ayrıca, aşağıdaki @Mic tarafından belirtildiği gibi, tarayıcıyı kullanarak önbelleği atlayacak ve sayfayı sunucudan yeniden yükleyecek window.location.reload()
ek bir argüman alır . tersini yapar ve mümkünse sayfayı önbellekten yükler.skipCache
window.location.reload(true)
window.location.reload(false)
window.location.reload(true)
Tarayıcının önbelleği atlayacağını ve sayfayı sunucudan yeniden yükleyeceğini söylerseniz . window.location.reload(false)
tam tersini yapacak.
Not: default
değer window.location.reload()
ISfalse
window.location.href = window.location.href
hile yaptı.
location.reload()
veya location.reload(false)
. Sayfanın tamamen yenilenmesini sağlamak için düğmesini kullanın location.reload(true)
.
Fark şu ki
window.location = document.URL;
URL'de bir karma (#) varsa (bundan sonra veya sonra bir şey olmadan) sayfayı yeniden yüklemez
window.location.reload();
sayfayı yeniden yükleyecektir.
location.href = location.href
kabul ederdim, ama tam olarak bu davranışı fark ettim ve kelimeyi yaymak için SO'ya geldim. Bunun location.reload()
yerine kullanın.
window.location.replace(window.location.pathname);
Boole true değerini yeniden window.location.reload(true)
yüklemeye eklerseniz,
sunucudan yüklenir.
Bu booleanın ne kadar desteklendiği belli değil, W3Org NS'nin onu desteklemek için kullandığından bahsediyor
Window.location.href ve içeriği arasında farklılık olabileceğini document.URL orada location.href ve standart dışı ve kaldırılan arasında bir fark olarak kullanılan en azından - document.location'dan , yeniden yönlendirme ile yapmak zorunda ama bu gerçekten son binyıl.
Belgeleme amacıyla window.location.reload () kullanacağım çünkü yapmak istediğiniz buydu.
Daha önce belirtildiği gibi, url'de bir karma (#) olduğunda href'i değiştirmek sayfayı yeniden yüklemez. Böylece, bunu düzenli ifadeler yerine yeniden yüklemek için kullanıyorum:
if (!window.location.hash) {
window.location.href = window.location.href;
} else {
window.location.reload();
}
IE'de, özellikle IE9'da bazı anormal davranışları araştıran bu soruya rastladım, eski sürümleri kontrol etmedi. Anlaşılan
window.location.reload();
bir saniye boyunca tüm ekranı temizleyen bir yenileme ile sonuçlanır;
window.location = document.URL;
sayfayı çok daha hızlı ve neredeyse algılanamayacak şekilde yeniler.
Biraz daha fazla araştırma yapmak ve kemancı ile bazı deneyler yapmak window.location.reload()
, boolean'ı onunla geçseniz de geçmeseniz de önbelleği atlayacak ve sunucudan yeniden yüklenecek gibi görünüyor , bu tüm varlıklarınızı (resimler, komut dosyaları, stil sayfaları, vb.). Dolayısıyla, sayfanın HTML'yi yenilemesini istiyorsanız, window.location = document.URL
çok daha hızlı ve daha az trafikle dönecektir.
Tarayıcılar arasındaki davranış farkı, IE9 yeniden yükleme yöntemini kullandığında görünür sayfayı temizliyor ve görünüşte sıfırdan yeniden oluşturuyor; burada FF ve krom, yeni varlıkları alana kadar ve farklıysa yeniden oluşturuyorlar.
Firefox'taki (12.0) bir fark, bir POST'tan oluşturulan bir sayfada, reload () öğesinin bir uyarı açması ve yeniden gönderme yapması, bir URL atamasının ise bir GET yapmasıdır.
Google Chrome her ikisi için de bir GET yapar.
JSF kullanarak, şimdi oturum süresi dolduktan sonra yenileme ile ilgili sorun yaşıyorum: sayfa yeniden yüklendikten sonra PrimeFaces ViewExpiredException ve bazı araştırma ile FireFox bir fark bulduk:
Arama window.location.reload()
, FF'deki yenile simgesini tıklamak gibi çalışır, satırı ekler
Cache-Control max-age=0
ayar window.location.href
URL satırında ENTER tuşuna basmak gibi çalışır, ancak bu satırı göndermez.
Her ikisi de GET olarak gönderilmesine rağmen, ilk (yeniden yükleme) önceki verileri geri yüklüyor ve uygulama tutarsız durumda.
yaklaşık 3 yıllık tecrübemden, hiçbir fark bulamadım ...
edit: evet, bunlardan birinin söylediği gibi, sadece bir boolean parametresini window.location.reload () öğesine geçirmek farktır. true değerini iletirseniz , tarayıcı yeni bir sayfa yükler, ancak false olursa , önbellek sürümü yüklenir ...
Bizim durumumuzda sadece sayfayı web görünümünde yeniden yüklemek istiyoruz ve bazı nedenlerden dolayı nedenini bulamadık! Web'de bulunan hemen hemen her çözümü deniyoruz, ancak location.reload () veya window.location.reload (), location.reload (true), ... gibi alternatif çözümler kullanarak yeniden yükleme yapmadan sıkıştık.
İşte basit çözümümüz:
Bunun gibi boş "href" ilişkilendirme değerine sahip bir <a> etiketi kullanmanız yeterlidir:
< a href="" ...>Click Me</a>
(bazı durumlarda yeniden yüklemeyi tetiklemek için hedefin tıklanmasında "true return" kullanmanız gerekir)
Daha fazla bilgi için şu soruya bakın: Boş bir href geçerli mi?
window.location.href, bu benim Android 5.1 web görünümünde hayatımı kurtardı. Bu sürümde sayfa Android'den location.reload () ile yeniden yüklenmiyor.