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

  • Fuse

    Fuse

    21 Kasım 2005
  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008