2012-11-05 2 views
1

나는 hashchange 이벤트 플러그인을 사용하여 기본 페이지를 만들었습니다. 하지만 지금은 더 큰 것을 만들고 싶지만 쉽게 할 수있는 올바른 방법을 찾을 수 없습니다.hashchange-event-plugin을 사용한 탐색 - 일부 질문

index.html은 애니메이션 로그인 상자로 시작합니다. 귀하의 계정에 로그인하면 로그인 상자가 사라지고 해시가 #start로 바뀝니다. content + header/footer가로드되고 페이드 인합니다.이 부분은 현재 문제가 아닙니다.

주된 이유는 index.html을 벗어나지 않고 브라우저의 뒤로 버튼을 활성화하는 것입니다. 나는 이것을 보관하기 위해 아약스와 해시를 사용한다. #start는 로그인 한 후 기본 인터페이스를로드합니다. #messages는 messages-interface를로드합니다. 둘 다 해시가 변경 될 때마다 트리거되어야하는 몇 가지 추가 스크립트 + 애니메이션이 있습니다.

일반적으로 제 문제는 서브 링크를 얻는 방법을 모른다는 것입니다. 예를 들어 사용자가 #messages에 있습니다 (Ajax는 /php/messages.php를로드하고 사라집니다). 메시지 인터페이스는 그의받은 편지함에 맨 아래 링크를 표시하여 보낼 편지함으로 이동합니다. 링크에는 어떤 옵션이 있습니까? messages.php는 새 메시지에 대해? s = n, 보낼 편지함에 대해? s = o와 같은 GET 요청을 기다립니다. 이 작업을 어떻게 수행 할 수 있습니까? 브라우저의 뒤로 버튼을 활성화 하시겠습니까?

해시를 # messages/outbox +로 변경하는 것과 같은 방법이 /php/messages.php?s=o 파일을로드 중입니까? jquery 코드는 어떻게 생겼을 까? 메인 네비게이션을 위해 나는 스위치 - 함수 (switch (hash) {case #start; case #messages} '; 이것은 더 많은 링크/해시를 많이 얻으므로 최상의 해결책이 될 수 없습니다.

제안/해결책?

답변

1

사용자가 버튼 기능을 다시 제공하는 것보다 URL을 유용하게 사용하려면 URL을 찾아야합니다.
페이지가 열려있는 동안 이전에 저장 한 URL을 붙여 넣은 사용자가 찾고있는 장소로 이동하려는 경우를 고려하십시오.
이 점을 염두에두면, 해시를 변경 (history/bookmarkable 상태로 유지하려고 할 때) 한 다음 해시 변경 이벤트에서 페이지와 액션을 처리하도록 신경을 썼습니다. hashchange 이벤트 플러그인을 사용하는 경우 해시 상태 관리 및 조각/쿼리 문자열 구문 분석 및 병합 유틸리티 메서드와 함께 전체 .deparam() 메서드를 제공하는 jQuery BBQ: Back Button & Query Library을 살펴볼 수 있습니다. 훨씬 더 쉽게 만들 수 있습니다.

+0

감사합니다. 바베큐 플러그인이 내 질문을 해결하는 것 같습니다! 그냥 확실하게 : 그래서 # 메시지 & S는 = O를 & foo는 = 막대와 같은 링크를 얻을 수 있습니다 : # 메시지를 처음에 열 다음 params를 실행합니까? – MukMuk

+0

@MukMuk 얼마나 많은 주를 밀어야하는지에 달려 있습니다. #messages를 푸시 한 다음 모든 매개 변수를 푸시했다면 2 개의 상태가되며 첫 번째 상태로 돌아가려면 뒤로 버튼을 두 번 눌러야합니다. [jQuery.bbq.pushState] (http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html#jQuery.bbq.pushState)를 사용할 수 있습니다. " 'state'를 현재 위치의 브라우저 기록에 추가하고 location.hash를 설정하고 바운드 된 hashchange 이벤트 콜백을 트리거합니다 (새 상태가 이전 상태와 다른 경우). –