Error rendering WebPanel: No renderer found for resource type: velocity Template contents: <meta name="ajs-keyboardshortcut-hash" content="$keyboardShortcutManager.shortcutsHash">
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.

현재와 비교 페이지 이력 보기

« 이전 버전 5 다음 »

Introduction

pushstate

 

pushstate란?

HTML5 에서 새로 추가된 history객체의 method

사양참조 : http://www.w3.org/TR/html5/browsers.html#dom-history-pushstate

 

왜 pushstae를 사용하는가?

url 변경이력을 편리하게 관리하자.

#를 사용했을 때의 문제 #를 변경하면 히스토리도 같이 변경된다.

따라서 뒤로가기버튼 클릭과 같은 상황에 대해서 일반적으로 대응할 수가 없다

물론 타이머를 이용해서 주기적으로 #값을 체크해서 변경되면 해당페이지를 복원하는 방법도

있지만 예외처리에 대한 비용이 지나치게 많이든다.

그래서 HTML5에 추가된 history.pushstate, history.replaceState를 이용해서 보다 편리하게

history를 관리해보자.

사용자가 의도하지 않은 행동 back 버튼등을 클릭하거나 다시 앞으로 가기 버튼을 눌렀을 때

(url해시 또는  이벤트를 가로채서 처리할 수도 있겠지만..)
pushstate를 사용하면 상태가 변경되었을 때 URL자체를 업데이트해서 url에 상태를 반영할 수 있습니다.

전통적인 웹개발방식

데이터를 저장하려면 , 데이터를 추가하려면

<input type="hidden">

세션, 쿠키

일반적으로 사용자가 데이터에 대한 처리를 하고자 할 때 페이지를 호출하는 것 ( URL을 호출하는 것) 이외에 다른 방법은 없습니다.

그렇다면 url에 데이터를 저장하려면 어떻게 해야 할까요

가장 간단한 방법은 queryString (질의문자열) 과 #를 사용하는 것입니다.

ex) http://www.slipp.net/wiki/pages/editpage.action?pageId=19530134&userid=gogo

 http://www.slipp.net/wiki/pages/writepage#pushstateinfo

관련 객체

   window.location   

   window.location.search

#를 쓰면 데이터를 편하게 저장할 수 있다. 

 

pushstate API

  • window.history.pushState(data, title [, url])
  • window.history.replaceState(data, title [, url]

pushstate 지원 브라우저

url 참고 : http://caniuse.com/#search=pushstate

  • 레이블 없음