SORU
9 EYLÜL 2009, ÇARŞAMBA


Nasıl penceresinden karma kaldırmak için.sayfa yenileme olmadan JavaScript ile konum?

http://example.com#something nasıl sayfayı yenilemek için neden olmadan #something, çıkarın mı var?

Şu çözümü denedim:

window.location.hash = '';

Ancak, bu karma sembolü # URL kaldırmaz.

CEVAP
14 Mart 2011, PAZARTESİ


Bu sorunun çözümü çok daha ulaşılabilecek günümüzde. HTML5 History API ABD konum çubuğu, geçerli etki alanı içinde herhangi bir URL görüntülemek için işlemek için izin verir.

function removeHash () { 
    history.pushState("", document.title, window.location.pathname
                                                         window.location.search);
}

Çalışan demo: http://jsfiddle.net/AndyE/ycmPt/show/

Bu Chrome 5, Opera 11.50 Safari 4, Firefox 9, çalışırveYANİ 10. Desteklenmeyen tarayıcılar için, her zaman kullanılabilir nerede bunu kullanan incelikle aşağılayıcı bir senaryo yazabilirsin:

function removeHash () { 
    var scrollV, scrollH, loc = window.location;
    if ("pushState" in history)
        history.pushState("", document.title, loc.pathname   loc.search);
    else {
        // Prevent scrolling by storing the page's current scroll offset
        scrollV = document.body.scrollTop;
        scrollH = document.body.scrollLeft;

        loc.hash = "";

        // Restore the scroll offset, should be flicker free
        document.body.scrollTop = scrollV;
        document.body.scrollLeft = scrollH;
    }
}

Tüm karma sembolü, tarayıcılar-henüz kurtulabilirsiniz.

Not: Eğer tarayıcı geçmişinde Geçerli sayfayı değiştirmek istiyorsanız, pushState() yerine replaceState() kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • Rootjunky.com

    Rootjunky.co

    22 EKİM 2011