2014-04-20 5 views
1

내 페이지에 팝업을 열 때 현재 URL을 변경하려면 window.history.pushState을 사용합니다. 이는 잘 작동하고 매우 편리합니다. 팝업창에서 다른 URL로 이동할 수 있습니다. 문제는 팝업을 닫을 때 pushState를 첫 번째 URL과 함께 다시 사용하지만 다시 누르면 팝업이 다시 열리는 것입니다.window.history.pushState 이후 첫 상태로 돌아 가기

내가 원하는 것은 팝업을 닫은 후 뒤로를 누르면 팝업을 열기 전에 이전 페이지로 돌아갑니다.

가정 -> 페이지 -> 팝업 1 -> 팝업 2 -> (팝업 창 닫기) 페이지 -> (보도 뒤) 홈 (대신 팝업 2)

+0

코드를 게시 할 수 있습니까? –

+0

[내 대답] (http://stackoverflow.com/questions/20156939/how-to-handle-back-button-while-changing-the-browser-url-with-html5-pushstate/20157851#20157851)을 확인하십시오. 이 게시물은 여러분과는 달리 팝업에 대해 말하지 않지만 팝업 식별자가있는 객체 리터럴은 팝업을 다시 누르면'popstate '를 조건부로 확인하는 데 도움이됩니다. –

답변

0

내가 history.go(-x)를 사용하는 대신 pushState(originalURL)을하고 있던 한 .

홈 -> (일반 내비게이션) 페이지 -> (푸시 스테이트) 팝업 1 -> (푸시 스테이트 + 팝업 증가 팝업) 팝업 2 -> (팝업 팝업 + 이동 (-2)) 페이지 ->

EDIT

제가 (크롬 50에서) 대부분의 브라우저 히스토리 크기에 대한 제한이 있다는보고 이렇게 후. 따라서 팝업 1에서 2로 이동할 때 replaceState으로 변경되었습니다.

홈 -> (일반 탐색) 페이지 -> (푸시 상태) 팝업 1 -> (replacestate) 팝업 2 -> (닫기 팝업 + 이동 (-1)) Page -> (뒤로) 홈

이렇게하면 뒤로를 누르면 팝업이 닫힙니다.

관련 문제