2015-02-06 1 views
0

역사를 밀고 변경 URL없이 데이터를 설정 :이유는 동일 같이 location.href (또는 빈)를 밀어 때 window.onpopstate 빈에 event.state입니다

window.history.pushState({ 
    stateName: "myStateName", 
    randomData: window.Math.random() 
}, "myStateName", location.href); 

.... 다음을 듣고

{ 
    stateName: "myStateName", 
    randomData: 0.34234234234 
} 
:

window.onpopstate = function(event) { 
    console.log(event.state); //logs null 
} 

하는 당신은 대부분의 시간을이 상태 값 대신에 null를 얻을 것이다 : 팝업 이벤트 및 브라우저에서 뒤로 버튼을 눌러서 트리거

어떻게 해결할 수 있습니까? 왜 이런 일이 발생합니까?

답변

1

이것은 이상한 문제이며 나에 따르면 충분하지 않습니다. 이 문제에 대한 해결책을 찾는 데 많은 어려움을 겪었습니다. 한시간 씩 인터넷 검색을 시도하고 다양한 솔루션을 시도하거나 다가와서 나는 두 번 (또는 그 이상) 상태를 푸시 할 때 작동하기 시작했다는 것을 알아 차렸습니다. event.state가 밀린 두 번째 마지막 상태를 언급하는 것이 분명 해졌다.

그래서이 작업을 만드는 것에 대한 대답은 두 번 밀고 한 번 듣기입니다.

window.history.push(..); 
window.history.push(..); 

이 사람이 도움이되기를 바랍니다.

관련 문제