koddla

Yazılımcıları bilgi ile güçlendirir.

Sayfayı yeniden yüklemeden URL’yi nasıl değiştirebilirim?

Sayfayı yeniden yüklemeden geçerli sayfanın URL’sini değiştirmenin bir yolu var mı? Mümkünse #’dan önceki bölüme erişmek istiyorum. Ya da başka bir deyişle yalnızca domainden sonraki bölümü değiştirmek istiyorum.

Örneğin Facebook’ta veya bir haber sitesinde bir fotoğrafı açtığınızda Facebook’un yaptığı şey budur. URL çubuğu doğrudan bu fotoğrafı işaret etmek için değişir, böylece URL’yi sitenin neresinde olduğunuzu kaybetmeden paylaşabilirsiniz.

İlk akla gelen çözüm window.location kullanmak. Ama bu çözüm sayfayı yeniler.

 window.location.href = "www.mysite.com/page2.php";  
// bu çözüm sayfayı yeniler.

Ancak, history.pushState ile yapabiliriz bunu. Örnek:


document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
     window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);

Daha sonra geri/ileri düğmesini algılamak için ise window.onpopstate kullanabiliriz:

window.onpopstate = function(e){
    if(e.state){
        document.getElementById("content").innerHTML = e.state.html;
        document.title = e.state.pageTitle;
    }
};

Tarayıcı geçmişini manipüle etmeye daha ayrıntılı bir bakış için, bu MDN makalesine bakabilirsiniz.


URL’yi değiştirmek ancak girdiyi tarayıcı geçmişine eklemek istemiyorsanız HTML5 replaceState’i de kullanabilirsiniz:

if (window.history.replaceState) {
   window.history.replaceState(statedata, title, url);
}

Bu yöntem geri düğme işlevselliğini ‘bozar’. Bu durum bazen (her görüntüde geri dönmek yerine galeri dizini sayfasına geri dönmesini istediğiniz gibi bir durumda) kullanışlı olabilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top