2010-02-13 2 views
0

전체 페이지 새로 고침 대신 ajax (jquery를 통해)를 사용하여 this website을 만들었습니다. 지금은 브라우저의 뒤로/다음 버튼이나 디팝 북마크 기능을 지원하지 않습니다. 예를 들어 jquery bbq 플러그인을 사용하여 이러한 기능을 구현하고 싶습니다. 그러나 완전히 개념을 이해하고 있는지 확신 할 수 없습니다.이 웹 사이트를 ajaxify하기 위해 모든 링크를 수정해야합니까?

중요한 점은 내가 누락되었습니다. 모든 링크를 수정해야합니까?

section = projects 
item= title-of-project 
content=visuals 
id=video 

스크립트 (이 아약스 호출을인지 감지 PHP는 따라서에만 비디오를 반환

http://example.com/projects/title-of-project/visuals/video/ 

내 응용 프로그램이 바르에 URL이 변환 :

예를 들어,이 URL을 html) 또는 비 아약스 호출 (따라서 비디오 코드가 들어있는 전체 페이지 html을 반환합니다).

대신 해시를 사용하면 브라우저가 변수를 보내지 않습니다. 권리?

나는 약간의 길을 잃었으므로 자세한 내용이 필요하면 주저하지 말고 주저하지 마십시오.

답변

3

는 기본적으로 해시 영구 링크는 다음과 같이 작동 :

  1. 사용자가 다른 URL로 AJAX 호출을 링크, 클릭.
  2. click 이벤트는 히스토리 관리 코드 (BBQ 플러그인과 같은)에게 파운드 기호 (#) 다음에 URL의 일부인 해시를 업데이트하도록 지시합니다.
  3. 히스토리 관리 코드는 사용자가 뒤로 또는 앞으로 단추를 클릭 할 때 브라우저 해시가 마지막 또는 다음 상태로 변경되도록합니다.
  4. 히스토리 관리 코드는 해시가 변경되었다고 생각할 때 이벤트를 시작합니다.
  5. 앱이 이벤트에 응답하고 브라우저 해시를 사용하여 콘텐츠를 가져올 새로운 URL을 결정합니다.

예를 들어, 사이트의 링크가 AJAX를 사용하여 http://example.com/some/path의 콘텐츠를로드한다고 가정 해 보겠습니다. 사용자가 링크를 클릭하면 브라우저 URL은 http://yoursite.com/#some/path이 될 수 있습니다. 다른 링크를 클릭하면 해시가 #some/other/path으로 변경 될 수 있습니다. 사용자가 뒤로 버튼을 누르면 해시는 #some/path으로 반환되어야합니다. 그런 다음 앱에서 현재 해시를 가져 와서 AJAX를 사용하여 http://example.com/some/path을 적절하게로드합니다.

따라서 AJAX에서 콘텐츠를 가져 오는 URL을 변경할 필요가 없습니다. 말이 돼? 나는 너의 질문을 오해했을지도 모른다.

+0

아니요, 귀하의 설명은 실제로 나에게 명확하게 설명하는 데 도움이됩니다. 그래서 기본적으로, 나는 url을 바꿀 필요가 없다? 내가 너를 올바르게 이해했다면, 스크립트를 할 때마다 클릭 할 때마다 해쉬에 저장해야 할 것이 무엇인지 말해야한다는 뜻이다. bbq 플러그인 설명서를 살펴 보았지만 어떻게해야하는지 잘 이해하지 못했습니다. – pixeline

+0

페이지의 URL을 변경하지 않아도됩니다. 기본적으로 해쉬는 단지'window.location.hash'를 통해 액세스 할 수 있습니다. 플러그인 페이지에서 "History & bookmarking via hashchange 이벤트"섹션으로 스크롤하십시오. 그것은 일들을 더 설명해야하는 몇 가지 예제 코드를 가지고 있습니다. 행운을 빕니다! – ashrewdmint

관련 문제