2009-03-10 5 views
4

AJAX에서 많이 사용하는 응용 프로그램이 있습니다. 그러나 탐색 기능이 필요합니다. URL을 스푸핑하기 위해 URL을 생성하기 위해 location.hash를 변경하려고합니다. 하지만 내가/fwd를 사용하면 URL 만 변경되지만 페이지는 다시로드되지 않습니다. 페이지를 다시로드하려면 어떻게해야 hstory.back을 무시할 수 있습니까?Ajax 응용 프로그램에 대한 back/fwd 키 이벤트 활성화

+1

질문의 제목을 조금 더 구체적으로 바꾸고 싶을 수 있습니다. 어때요 "사용자가 브라우저의 뒤로 버튼을 클릭하면 아약스와 페이지를 다시로드"또는 이와 비슷한 무엇입니까? –

답변

3

뒷 사건을 정확하게 포착 할 수는 없지만 이러한 문제의 대부분은 해결되었습니다. 또한 좋은 점은 입니다.

really simple history (RSH라고도 함)을 살펴보고 구현하거나 작동시켜 작동 방식을 확인하십시오.

7

이 동작을 구현하기 위해 연속 폴링 이외의 다른 방법을 모른다. 구현은 다음과 같습니다

var lastHash = ''; 

function pollHash() { 
    if(lastHash !== location.hash) { 
     lastHash = location.hash; 
     // hash has changed, so do stuff: 
     alert(lastHash); 
    } 
} 

setInterval(pollHash, 100); 
+0

감사합니다. 매우 유용합니다. 즉시 호출 한 함수 명령문에 전체 표현식을 래핑하고 해당 함수의 리턴 값이 작성한 함수가 될 경우 작은 개선 사항을 추가 할 수 있습니다. 이렇게하면 전역 바인딩을 제거 할 수 있습니다. –

+0

이것이 Török이 말한 것입니다. 잘 작동하는 것 같습니다. 캡슐화로 인해 조금 더 청결한 느낌. var hashChecker = function() { \t lastHash = location.hash; \t 복귀하여 setInterval (함수() { \t 경우 (lastHash ==에 location.hash) { \t \t lastHash에 location.hash =;! \t \t }}, 50); }() –

1

이 질문에 대한 대답은 이러한 질문에 대한 내 대답으로 다소 동일합니다 :

요약하면, 전체 해시 변경 프로세스를 설명하고 아약스와 함께 사용하는 두 개의 프로젝트는 다음과 같습니다.

  • jQuery History (페이지 상태를 관리하고 페이지를 업데이트하기 위해 변경 사항에 바인딩하기 위해 해시 사용).

  • jQuery Ajaxy (jQuery History의 ajax 확장자로 완전 아약스 웹 사이트를 완벽하게 방해하지 않고 자연스럽게 분해 가능).

0

balupton 답변은 정말 훌륭합니다.

그러나 아약스 요청을 처리 할 다른 jQuery 플러그인도 있습니다 (address).