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

  • 99being99

    99being99

    2 EYLÜL 2008
  • Mega64

    Mega64

    24 ŞUBAT 2006
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006