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

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • Defence Videos

    Defence Vide

    13 Mayıs 2013
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007