2012-05-22 5 views
5

onHistoryBack과 같은 후크를 제공하는 방법이 있습니까? 나는 현재JavaScript의 기록 back hook

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

와 history.js을 사용하고 있습니다하지만 사용자가 history.back을 (presed 있는지 문의 할 방법이 없음) 또는이 History.pushState() 호출 .. 어떤 생각의 결과인지?

답변

2

내가 한 방식은 실제 사이트를 클릭 할 때마다 변수를 true로 설정하는 것이 었습니다. 그런 다음 statechange 이벤트가이 변수를 검사합니다. 그것이 사실이라면, 그들은 사이트에서 링크를 사용했다. 거짓 인 경우 브라우저 다시 버튼을 클릭했습니다. 예를 들어

: 도움이 :) 상태의 모든 History.savedStates에 저장됩니다

+0

감사합니다. 나는 당신과 같은 접근법을 사용하여 방금 해결했지만, "statechange"훅이 실행되는 것을 막기 위해 "Clicked"수정 사이에 History.pushState (...) 호출을 래핑했습니다. –

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; 

}); 

희망. 등을 누를 때마다 다른 상태가 추가됩니다. 따라서 이론적으로 History.savedStates을 테스트하여 History.savedStates[History.savedStates.length - 2] == currentState인지 확인하십시오. 이는 사용자가 단계 a에서 단계 b로, 단계 a로 되돌아 간 것을 나타냅니다. 그러나 사용자는 뒤로 버튼 이외의 다른 방법을 사용할 수 있으므로 사용자 이벤트와 함께 사용해야합니다.

History.getStateByIndex 메서드를 사용하여 저장된 상태를 반환 할 수도 있습니다.