Tüm bağlantılarda bir tıklama olayı dinleyin. (CoffeeScript)
$(document).on 'click', 'a' ->
window.linkClicked = true
Alternatif olarak, Backbone.history.navigate()
müdahale edebilir. Birisi onu tıklarsa, geri dönmeyecekleri anlamına gelir, bu yüzden true
'a bir bayrak ayarlayın. Ayrıca yönlendiricinizde tüm yönlendirici olayları dinleyen bir etkinlik var. Her zaman önceki parçayı saklayın (Backbone.history.getFragment()
). Mevcut parçayı önceki fragmanla karşılaştırın. Aynı ise, bu işaretin true
veya false
olarak ayarlanmış olup olmadığını kontrol edin. false
olarak ayarlanmışsa, geri döndüğünüzü biliyorsunuz, true
ise o zaman değil ve bir kullanıcı bir bağlantıyı tıklattı ama aynı önceki sayfaya geldi. Son olarak, bu bayrağı false
olarak sıfırlayın.
class SnazzyRouter extends Backbone.Router
initialize: ->
# This gets triggered everytime a route event gets triggered
@on 'all', =>
currentFragment = Backbone.history.getFragment()
window.backDetected = false # assume no back detected
if !window.linkClicked and currentFragment == window.previousFragment
window.backDetected = true
window.linkClicked = false # reset
window.previousFragment = currentFragment
window.linkClicked = false
window.backDetected = false
window.previousFragment = null
snazzyRouter = new SnazzyRouter()
Şimdi, basit bir
# Did we go back?
console.log "I CAN'T BELIEVE WE WENT BACK!" if window.backDetected
herhangi açıklamalar gerekiyorsa bana bildirin var (Sadece uygulamam için bu uygulamaya ve o inşaat).
Bunun gerçekten soruya cevap verdiğini düşünmüyorum; tarayıcı geri/ileri düğmeleri arıyordu. – mix3d
'if! Window.linkClicked ve currentFragment == window.previousFragment' Eğer kullanıcı geri düğmesini tıklatır ve tutarsa bir kod bir _older_ girişi seçerse bu kod başarısız olur. –