すべてのリンクでクリック イベントをリッスンします。(コーヒースクリプト)
$(document).on 'click', 'a' ->
window.linkClicked = true
または、傍受することもできますBackbone.history.navigate()
。誰かがそれをクリックした場合、それは彼らが戻らないことを意味するので、フラグを に設定しtrue
ます。また、すべてのルーター イベントをリッスンするルーターにイベントを設定します。常に前のフラグメントを保存します ( Backbone.history.getFragment()
)。現在のフラグメントを前のフラグメントと比較します。それらが同じである場合は、そのフラグがtrue
またはに設定されているかどうかを確認しfalse
ます。に設定されてfalse
いる場合は、戻ってきたことがわかります。戻ってtrue
いない場合は、誰かがリンクをクリックしたが、同じ前のページに移動したことがわかります。最後に、このフラグを にリセットしfalse
ます。
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()
さて、それは簡単です
# Did we go back?
console.log "I CAN'T BELIEVE WE WENT BACK!" if window.backDetected
説明が必要な場合はお知らせください(アプリにこれを実装したところ、動作します)。