2012-05-22 24 views
5

onHistoryBack gibi bir kanca sağlamanın bir yolu var mı? Şu andaTarihçe arka kanca üzerinde JavaScript

History.Adapter.bind (window, 'statechange', function() {}); 

ile history.js kullanıyorum Ama kullanıcı history.back (presed sormak için hiçbir yolu yoktur) ya da bir History.pushState() çağrısı .. bir fikrin sonucu ise?

cevap

2

Bunu yaptığım gibi, gerçek siteye yapılan her tıklatmada bir değişken kümesi true olarak ayarlanmıştı. Statechange olayı daha sonra bu değişkeni kontrol edecektir. Doğru olsaydı, sitede bir bağlantı kullandılar. Yanlış olsaydı, tarayıcıların geri düğmesini tıklamışlardı. Örneğin

: yardımcı olur :) devletlerin tamamı History.savedStates saklanır

+0

teşekkürler @will Sadece sizinki gibi bir yaklaşım kullanarak çözdüm, ama "statechange" kancasının engellenmesini önlemek için "clicked" modifikasyonları arasında History.pushState (...) çağrımı yaptım –

1

var clicked = false; 

$(document).on('click','a',function(){ 

    clicked = true; 

    // Do something 

}); 

History.Adapter.bind (window, 'statechange', function() { 

    if(clicked){ 
     // Normal link 
    }else{ 
     // Back button 
    } 

    clicked = false; 

}); 

Umut. Her seferinde geri itildiğinde başka bir durum eklenir. Yani teoride History.savedStates[History.savedStates.length - 2] == currentState'un olup olmadığını görmek için History.savedStates test edebilirsiniz. Bu, kullanıcının adım a'dan adım b'ye geri döndüğünü gösterir. Ancak, kullanıcı geri düğmesinden başka yollara gidebilir - bu yüzden bunu kullanıcı etkinlikleri ile birlikte kullanmanız gerekebilir.

Kayıtlı bir duruma dönmek için History.getStateByIndex yöntemini de kullanabilirsiniz.

İlgili konular