Window.location.href, window.location.replace ve window.location.assign arasındaki fark


129

Arasındaki fark nedir

  1. window.location.href="http://example.com";
  2. window.location.replace("http://example.com");
  3. window.location.assign("http://example.com");

window.location.assign()Mevcut oturum geçmişinin yerini alan birçok forumda okudum ve bu nedenle tarayıcının geri düğmesi çalışmayacak. Ancak bunu yeniden üretemiyorum.

function fnSetVariable() {
    //window.location.href = "http://example.com";
    window.location.replace("http://example.com");
    //window.location.assign("http://example.com");
}

<a onmouseover="fnSetVariable();" 
   href="PageCachingByParam.aspx?id=12" >
   CLICK 
</a>

1

İşte daha iyi bir açıklama: stackoverflow.com/a/847130/96656
Mathias Bynens

Yanıtlar:


165

Bunlar aynı şeyi yapar:

window.location.assign(url);
window.location = url;
window.location.href = url;

Sadece yeni URL’ye giderler. replaceTarihine yeni bir kayıt eklemeden URL'ye Öte yandan Navigates üzerinde yöntemi.

Dolayısıyla, bu birçok biçimde okuduklarınız doğru değil. assignYöntem tarihine yeni bir kayıt eklemek.

Referans: http://developer.mozilla.org/en/window.location


1
Cevap için çok teşekkürler. Tarayıcı geri düğmesi sorununu çözmeme çok yardımcı oldu.
santosh kumar patro

@blunderboy: Zaten heyelanla gelen en iyi cevap bu, yani bu hiçbir şeyi değiştirmez.
BoltClock

Öyleyse ne anlamı var assign()? Bu cevaptan ve belgelerden, kulağa aynı geliyor location = ....
Mitya

11

Geri düğmesini kullanamamakla ilgili kısım yaygın bir yanlış yorumlamadır. window.location.replace (URL) , yeni girişin üzerine yazarak sayfa geçmişi listesinden en üstteki BİR girişi atar , böylece kullanıcı o belirli bir web sayfasına kolayca geri dönemez. İşlev, tüm sayfa geçmişi listesini SİLMEZ ve Geri düğmesini tamamen işlevsiz hale getirmez.

Ben o kutunun değişikliği veya üzerine yazma geçmiş listesi girişlerinin biliyoruz ki parametrelerinin (NO fonksiyonu ne de kombinasyon Eğer belirli kesinlikle için ait değil - tarayıcılar genellikle basitçe hatta hiç kudretini herhangi operasyonu tanımlayan vermeyerek bu güvenlik sınırlaması impelement dışında herhangi girişi etkileyen üst sayfa geçmiş listesinde bir. Ben böyle bir fonksiyon var olsaydı yapabilir amaçlı yazılımlara dastardly şeylerden sıralar düşünmeye titreme.)

Geri düğmesini gerçekten işlevsiz hale getirmek istiyorsanız (muhtemelen "kullanıcı dostu" değil: gerçekten yapmak istediğiniz buysa bir daha düşünün ), yepyeni bir pencere "açın". (Sen "açık" bir pop-up bile gelmemektedir sahip çok bir "Geri" düğmesini ... ama pop-up bu günlerde çok popüler değil :-) kullanıcı ne olursa olsun (göstererek sayfanızı tutmak istiyorsanız yine "kullanım kolaylığı" sorgulanabilir), sayfanızı her seferinde en baştan net bir şekilde yeniden yükleyen bir window.onunload işleyicisi kurun.


4
'HİÇBİR işlev veya bildiğim parametrelerin kombinasyonu geçmiş listesi girişlerini değiştirebilir veya üzerine yazabilir' ... HTML5'e hoş geldiniz
SpYk3HH

6
Sahip olmadığınız tarayıcı geçmişi girişlerini değiştirememe veya üzerine yazamama, uzun süredir geçerli olan bir güvenlik kuralıdır . HTML5 bu kuralı basitçe sürdürür.
Chuck Kollars

Konuyu ya da alay etmeyi daha çok kaçırdınız. Html5 ve geçmişe bakın
SpYk3HH
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.