2009-04-17 7 views
5

jQuery를 기반으로하는 ajax 응용 프로그램이 있습니다. jQuery history 플러그인을 사용하여 브라우저 기록을 사용하도록 설정했습니다. 그러나 응용 프로그램이 너무 많은 기록을 생성했음을 알 수 있습니다.jQuery를 사용하여 브라우저 기록 삭제

특히 페이지에서 이전의 아약스 상태로 돌아갈 수있는 페이지 내 "아약스 백"버튼을 제공합니다. 인 페이지의 "ajax-back"버튼이 눌려 졌을 때, 우리는 broswer back 버튼처럼 움직이거나, 히스토리의 현재 색인을 이동 시키거나, 최신 히스토리 레코드를 제거하거나, 새로운 히스토리 레코드를 삽입하는 것을 원한다.

그래서, 자바 스크립트에서 최신 브라우저 기록을 삭제할 수 있습니까? 또는 브라우저 기록 목록의 현재 색인을 수정할 수 있습니까?

jQuery 히스토리 플러그인을 기반으로하는 예제는 대단히 감사하겠습니다.

답변

7

아마도 당신이 시도하고있는 것을 쉽게 할 수 없습니다. window.location.replace는 새 URL로 이동하여 기록에서 현재 페이지를 제거하지만 이는 전체 페이지 탐색을위한 것이며 거의 jQuery의 가짜 기록을 깨뜨릴 것입니다.

히스토리로 오프셋 된 정수를 취하여 관련 항목으로 이동하는 window.history.go()를 사용하여 히스토리 스택에서 현재 위치를 변경할 수 있습니다. 스택을 전혀 수정하지 않고 새로운 장소에 배치합니다. 또한 back() 및 forward() 함수도 있으며 각각 -1과 1로 호출됩니다. 이것은 아마 당신이 찾고있는 것이지만, 스택을 수정하지는 않을 것입니다.

이상적으로 jQuery.history가하는 것처럼 기록을 유지하지 않지만 대신에 onhashchange 추상화를 제공하는 jQuery 용 플러그인을 발견하면 라이브러리는 해시 변경에만 반응합니다. 그렇게하면 브라우저가 히스토리 스택을 담당하게되고 개 ajaxian history 라이브러리에 많은 미친 문제가 발생하지 않게됩니다.

+1

+1. Ersatz 탐색은 유용성 악몽입니다. 실제 뒤로/앞으로 버튼을 사용하십시오. – bobince

2

브라우저 기록은 일반적으로 사이트가 스누핑/정보에 액세스하는 것을 방지하기 위해 매우 제한된 방법으로 javascript를 통해 액세스 할 수 있습니다. 짧은 대답 - 내가 아는 한 jquery를 통해 수행하려는 작업을 사용할 수 없습니다.