2011-07-03 8 views
2

HTML5 기록 개체를 이해하려고합니다. 다음은 간단한 예제입니다. 자바 스크립트 기록 onpopstate

function addDialog(){ 
     document.getElementById('d').style.display =''; 
     history.pushState({name:"changed"},"","#newURL"); 
    } 

    window.onpopstate = function(e){ 
     alert(e.state); 
    } 

나는 display 속성이 none 인의 ID ddiv 있습니다. 링크를 클릭하면 div가 표시되고 기록이 변경되어 새 URL이로드됩니다.

새 URL을 복사하여 복사하면 popstate 이벤트가 발생하고 은 e.state입니다.

새로운 URL을로드하면 http://example.com#newURL, e.state은 pushstate를 사용하여 푸시 한 객체를 가리켜 야합니다.

내가 틀렸을 때 나 또한 e.state이 채워지는지 알고 싶습니다.

답변

3

테스트 한 결과 e.state는 뒤로 또는 앞으로 버튼을 클릭 할 때 내역에 추가하는 팝 상태 만 얻습니다. 그렇지 않으면 널에게 널 줄 것이다.

URL에 매개 변수를 사용할 수 있으므로 요청이 기록 호출이나 위치 표시 줄의 URL에서 왔는지 테스트 할 수 있습니다.

onpopstate = function(event) { 
    alert('popEvent: ' + event); 
    if(event.state){ 
     setupPage(event.state); 
    } else { 
     setupPage(getQStringParam('zid')); 
    } 
} 
관련 문제