10
페이지를 업데이트하지 않고 브라우저 기록을 업데이트하는 동안 3 개의 링크를 사용하여 단순한 전체 History.js 예제를 전체 페이지에서로드 할 수있었습니다. 여기 이것이 History.js를 사용하는 적절한 방법입니까?
는와 관계있는 코드 조각이다 - 완전한 작동 예는 여기 http://jsfiddle.net/PT7qx/show<a href="/page-header">Page Header</a>
<a href="/login-form">Login Form</a>
<a href="/nothing">Nothing</a>
<script>
var History = window.History;
if (!History.enabled) {
return false;
}
History.Adapter.bind(window, 'statechange', function() {
var State = History.getState();
History.log(State.data, State.title, State.url);
if (State.title == 'Page Header') {
$('#content').load('/user/login/ .pageHeader > *');
}
if (State.title == 'Login Form') {
$('#content').load('/user/login/ #common-form > *');
}
if (State.title == 'Nothing') {
$('#content').empty()
}
});
$('body').on('click', 'a', function(e) {
var urlPath = $(this).attr('href');
var Title = $(this).text();
History.pushState(null, Title, urlPath);
// prevents default click action of <a ...>
return false;
});
<\script>
이다 나는 이것이 올바른 사용법이 있는지 알고 싶습니다. 이전 버전에서는 # urls를 사용하여 이벤트에 바인딩 할 수있었습니다. .on() 클릭 이벤트를 사용하여 History를 호출하고 거기에서 클릭 한 링크를 정렬하여이 최신 버전의 URL에 이벤트를 바인딩하는 예는 보지 못했습니다.
이 예를 위해 이것이 최선의 방법인지 확실하지 않습니다.
의 아약스로드를 수행 working jsfiddle example이지만, 그'History.pushState을 (주목할 필요가 title "). text(), State.urlPath);'window.location.pathname()은 함수가 아니므로 오류가 발생합니다. 그냥 괄호를 제거하면 매력처럼 작동합니다. – indextwo
잡기에 감사드립니다. 내가 작업중인 버전에서 그것을 붙여 넣고 있다고 생각했기 때문에 내가 어떻게 그것을 놓쳤는 지 잘 모르겠습니다. – dansalmo
@dansalmo, 위 예제 (http://stackoverflow.com/a/13314438/1867808)와 같은 예제를 구현하면 index.html 파일과 관련하여 추가 컨텐츠를 어디에 배치해야합니까? index.html과 같은 폴더에있는 response.html에 넣습니까? –