표시됩니다. 클릭 할 때 AJAX를 통해 아래 목록의 내용을 새로 고치기위한 여러 검색/필터 버튼이있는 페이지가 있습니다. .HTML5 기록 API : JSON은 "뒤로"다른 페이지로 이동 한 다음 다시 "앞으로"
이 과정에서 새로운 필터링 된 페이지가 북마크 가능하도록 뒤로 버튼이 작동하도록 히스토리 (푸시 스테이트를 통해)를 수정합니다. 나는 또한 Popstate 이벤트를 듣고, Back에 반응합니다.
window.addEventListener("popstate", function(ev) {
if (!window.history_ready) { return; } // Avoid the one time it runs on load
refreshFilter(window.location.href, true);
});
refreshFilter: function(newURL, backButtonPressed){
$.ajax({ url: newURL}).done(blah);
if (!backButtonPressed) {
window.history_ready = true;
history.pushState(null, null, newURL);
}
}
이 하나의 이상한 경우를 제외하고, 훌륭하게 작동 ...
- 사용자가 페이지에있는 "A"
- 그들은 클릭
내 코드는 더 많거나 적은 같은 외모 역사와 함께하는이 페이지로 이동하는 링크 ("B"라고 부름)
- 두 개의 필터를 실행 한 다음 뒤로 몇 번 누르면 "B"의 초기 상태로 돌아갑니다.
- 다시 '뒤로'를 클릭하면 다시 'A'로 전송됩니다.
- 이 때 전달 버튼을 누르면 페이지 B에 대해 서버에 다시 요청하는 대신 브라우저에 묶음이 표시됩니다 페이지 내용과 JSON 코드의
이 적어도 최근에
왜 내가 그것을 어떻게 이런 일이 피할 수된다 크롬 (이 JSON은 물건을 필터링하는 내 AJAX 요청의 하나의 응답이다)?
참조하십시오 -받는 완전히 무시 '및 아약스 = 1'추가하여 (약간 AJAX에 의해 가져온 URL을 변경 쿼리 문자열) - 작동했습니다! :) – Ashe
특히이 솔루션을 사용할 때 Chrome 캐시를 비울 수 있습니다. Chrome이 이전 결과를 캐시했기 때문에 Chrome을 계속 사용해 본 후에도 여전히 작동하지 않는 것처럼 보일 수 있습니다. – jonnybot
@jonnybot 고마워, 나는 다른 사람들을 위해,하지만 나를 위해 일하는 수정 생각 캐시를 지우기 작업을 시작하고 버그가 사라졌습니다. – sandre89