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

  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011
  • Shaollin Animes

    Shaollin Ani

    19 HAZİRAN 2013