2013-11-01 2 views
2

내 웹 페이지에 History.js을 사용하고 있습니다. 정상적으로 작동하지만 사용자가 페이지의 탐색 경로를 클릭하면 바로 첫 페이지로 이동합니다. 예를 들어 브라우저의 뒤로 버튼을 누르지 않고도 History.js 스택이 지워지지 않고 첫번째 페이지의 뒤로 버튼을 누르는 것이 제대로 작동하지 않습니다. 은 History.js 스택을 지울 수있는 방법입니다. Html5 히스토리 API에서는 history.go(-(history.length - 1));을 사용하지만 History.js를 사용할 때 History.length은 항상 빵 부스러기를 따라 가고 뒤로 버튼 클릭 중 일부를 건너 뛰더라도 항상 0을 제공합니다.history.js의 히스토리 스택 지우기

답변

7
로 이동하려면 뒤로 단추를 사용할 수 없습니다

세션 히스토리을 지우거나 특권이없는 코드에서 뒤로/앞으로 탐색을 비활성화하는 방법은 없습니다. 가장 근접한 솔루션은 location.replace() 메서드입니다.이 메서드는 세션 기록의 현재 항목을 제공된 URL로 바꿉니다. Mozilla Source

해결책이 같이있다 :

var Backlen=history.length; 

history.go(-Backlen); // Return at the beginning 

window.location.replace("page url to redirect"); 

Source

+0

우리가 History.js에 history.length이 없습니다. html5 기록 API를 사용하고 있지는 않지만 html4 브라우저 호환성을 위해 History.js (https://github.com/browserstate/history.js/) – vishesh

+0

문제를 해결하려면 github에서 문제를 열 ​​수 있습니다. –

0

직접적인 답을 모르지만 window.location.replace(url);을 시도해 볼 수 있습니다.

다른 게시물을 인용 : 를 현재 페이지가 세션 기록에 저장되지 않습니다) (대체 사용 후, 사용자를 의미하는 것이 In Javascript, how do I "clear" the back (history -1)?

0

이것은 History.js에 해당합니다.

var urlPath = "index.html"; 
var response = { "html": htmlpage.toString() }; 
var currentIndex = History.getCurrentIndex(); 
// Return at the beginning 
if(currentIndex > 0) 
    History.go(-currentIndex); 
//pushState will clear forward history 
History.pushState( response , null, urlPath); 
+0

어떤 경우에는 이것이 작동하지만 그렇지 않은 경우도 있습니다. 대체 상태가 발생할 때마다 색인을 증가시킵니다. 첫 번째 페이지는 다음 색인 인 대체 상태가있는 경우 초기 게시물입니다. 첫 번째 페이지로 돌아가려면 첫 번째 페이지의 마지막 업데이트이기 때문에 두 번째 인덱스로 돌아갑니다. – deefactorial

2

도노반의 대답은 훌륭하지만 내 경우에는 작동하지 않습니다. backlength 인덱스가 너무 높기 때문에 history.go (-Backlen) 명령은 무시됩니다.

이 솔루션은 내 경우에 작동합니다

var backlen = history.length - 1; 
history.go(-backlen); // Return at the beginning 
history.replaceState({}, null, 'your relative url'); 
관련 문제