2013-11-22 7 views
1

의 페이지 범위를 초래 window.onpopstate pushStateonpopstate을 사용하고 싶습니다.는 특정 링크를 클릭 할 때 나는 그것이 데이터베이스에서 동적 콘텐츠를로드하는 함수를 호출 한 한

위의 history.pushState 줄의 주석을 제거하여 URL 및 브라우저 기록 변경을 활성화 할 수 있습니다. 여러 페이지에서 앞뒤로 탐색하면 올바르게 작동합니다.

하지만 콘텐츠를로드하지 않습니다.

백 동안 나는 모든 기능을 가지고 생각 (즉, 탐색 및 콘텐츠 로딩)이 요소의 추가와 함께 :

window.onpopstate = function(event) { 
console.log("pathname: "+location.pathname); 
loadContent(location.pathname); 
}; 

I 따라서 별도의 블록에 추가 시도 :

<script> 
$(document).ready(function() { 
window.onpopstate = function(event) { 
console.log("pathname: "+location.pathname); 
loadContent(location.pathname); 
}; 
}); 
</script> 

하지만 탐색 할 때 페이지 범위가 1로 제한되며 앞으로 탐색 할 수 없습니다.

위 코드를 기반으로 탐색 및 콘텐츠 로딩을 모두 수행하려면 어떻게해야합니까?

그리고 참조 편집는 올바른 경로는 브라우저 기록에, 그것은 단지 그들이 (FF와 크롬) 탐색 할 수 없으며, 해당 내용이로드되지이다 있습니다. Firebug에 오류가 없습니다. 나는이 답이라고 생각

답변

0

, 나는이 건너 온 :

https://stackoverflow.com/a/10176315/1063287

"또한 onpopstate()에로드 페이지 pushState() 자신을 시도하고 사용 을 밀어하지 않도록" .

그래서 나는이 유지 :

<script> 
$(document).ready(function() { 
window.onpopstate = function(event) { 
console.log("pathname: "+location.pathname); 
loadContent(location.pathname); 
}; 
}); 
</script> 

을하지만 함수에서이를 제거 :

history.pushState('', 'New URL: '+href, href); 

그리고 jQuery를가 클릭 예를 들어, 트리거 대신에 추가 :

$(document).on("click","#main_menu a", function (e) { 
href = $(this).attr("href"); 
loadContent(href); 
history.pushState('', 'New URL: '+href, href); 
e.preventDefault(); 
});