0
현재 아약스 지원 웹 사이트에서 작업 중입니다. 웹 사이트와 브라우저의 역사를 탐색하는 것은 효과적이지만 해결할 수없는 한 가지 문제가 있습니다.뒤로 버튼 누르기 후 Ajax 웹 사이트가 맨 위로 이동하지 못하도록
사용자가 뒤로 버튼을 누르면 마지막 페이지가 다시 나타납니다. 내가 popstate 이벤트를 통해 이전에 세로 스크롤 위치를 설정하지만, 그것은
function loadContent(nextContent, nextUrl, newPage = true) {
var currUrl = window.location.pathname;
currUrl = currUrl.slice(7,currUrl.length);
var scrollY = window.scrollY;
var prevContent = document.getElementById("page").innerHTML;
document.getElementById("page").innerHTML = nextContent;
if (newPage) {
// overwrite current history entry
history.replaceState({ content: prevContent, url: currUrl, scrollY: scrollY }, null, currUrl);
initPage();
window.scrollTo(0,0);
// write new entry
history.pushState({ content: nextContent, url: nextUrl, scrollY: 0 }, null, nextUrl);
} else {
initPage();
// scroll to previous scroll position
window.scrollTo(0,history.state.scrollY);
}
}
window.onpopstate = function(e) {
loadContent(e.state.content, e.state.url, false);
// page scrollY will be set in load, after page content was added
}
내가 코드가 지금까지 이전에 내가 윈도우 후 경고를 넣어했기 때문에 작동하는지 알아 ... 다시 맨 위로 점프 .scrollTo() 그리고 동결 중에 페이지가 올바른 위치에 있다는 것을 알았습니다. 그러나 계속 한 후에 그것은 정상에 뛰어 올랐다. 다른 (기본값) 이벤트가 백그라운드에서 맨 위로 스크롤됩니까? 나는 다음에 onpopstate 기능을 변경하여 지금 문제를 해결 도움
이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 포스트/17815005) – baudsp
@baudsp 방금이 순위를 올려서 더 많은 (또는 모든) 사람들이이 게시물을 최종적으로 볼 수 있기를 바랍니다. 운동을하지 못했지만 다행스럽게도 2 일 후이 문제를 해결할 수있었습니다 ... 현상금을주지 않고 게시물에 관심을 끌 수있는 방법이 있습니까 (실제로 많은 것을 제공 할 수는없는 26 ...) – Jaspa
검토 대기열에서 답변을 검토 할 때 내 의견이 자동으로 추가되었습니다. 질문을 수정하면 홈페이지에 다시 보내야하므로 대답 할 필요가 없습니다. – baudsp