본문 바로가기
프로그래밍 놀이터/Web

[HTML5] 브라우저 히스토리 다루기 ( Browser History ) - 기초, Tutorial, Sample code.

by 돼지왕 왕돼지 2012. 9. 8.
반응형



출처 : 하루 1시간 3일만에 배우는 HTML5

이미지 출처 : http://caniuse.com/#feat=history


IE 는 역시(?) 현재는 지원하고 있지 않지만, 대부분의 브라우저가 지원하고 있습니다. 안드로이드가 지원하지 않는것이 좀 그렇네요.. 하지만, 곧 지원하겠죠?


브라우저 히스토리 시작하기

- 히스토리 객체를 사용해서 현재 페이지로부터 이전 페이지나 다음 페이지로의 이동이 가능하다. 현재 페이지에서 3페이지 뒤로 이동하는 등의 작업도 가능하다.

- 브라우저의 히스토리 상태 객체에 데이터를 저장할 수도 있다. 상태 객체에 데이터를 추가한 후 데이터 저장을 위해 상태 객체를 현재 페이지에 push 한다. 반대로 저장한 데이터를 다시 꺼내서 데이터를 복원시킬 수도 있기 때문에 이 기능을 이용한 페이지 간에 데이터 전달이 가능하다.




History API 살펴보기

- window.history.length; // 히스토리 전체 개수
 

- window.history.go( [delta] ); // delta를 넣지 않으면 refresh, 음수를 넣으면 back 역할
- window.history.back(); // 이동할 수 없다면 무시.
- window.history.forward();
 

- window.history.pushState( data, title[, url] ); // url 은 저장하려는 데이터와 관련된 특정 페이지.
- window.history.replaceState( data, title[, url]);
  // 히스토리 객체에 현재 저장된 데이터를 변경한다.

- window.onpopstate();
  // 히스토리에 저장된 데이터를 다시 사용하기 위해 꺼낸 후 사용 가능한 상태가 됐을 때 발생.




예제 코드

<!DOCTYPE html>

<html>

<head>

<title>

Page To Page History

</title>

<script type="text/javascript">

function back()

{

window.history.back();

}

function forward()

{

window.history.forward();

}

function go()

{

var amount = document.getElementById( "amount" ).value;

window.history.go( amount );

}

function loader()

{

var length = window.history.length;

document.getElementById( "length" ).innerHTML = "<h1>" +

                                                                                            "History length : " + length + "</h1>";

}

function pushData()

{

var statedata = document.getElementById( "statedata" ).value;

var containerObject = {container:statedata};

history.pushState( containerObject, "item", "history.html" );

}

function popData( event )

{

var state = "Page: " + document.location + " Data : " + event.state.container;

document.getElementById( "state" ).innerHTML = "<h1>" + state + "</h1>";

}

window.addEventListener( "popstate", popData, false );

</script>

</head>

<body onload="loader();">

<h1>Page to Page History</h1>

<input type="button" value="Back" onclick="back();">

<input type="button" value="Forward" onclick="forward();">

<br><br><br>

Text to push : <input id="statedata" type="text">

<input type="button" value="Push Data" onclick="pushData();">

<br>

<div id="length"></div>

<br>

<div id="state"></div>

<br>

Pages to move by : <input id="amount" type="text">

<input type="button" value="Go" onclick="go();">

<br>

</body>

</html>


history.html


최초화면



상태저장( pushState )



상태 불러오기 ( popstate )



도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x )






 
반응형

댓글