Udało mi się skompletować uproszczony pełny przykład History.js za pomocą trzech linków, aby załadować fragmenty treści z całej strony bez aktualizacji strony i aktualizacji historii przeglądarki.Czy to właściwy sposób korzystania z History.js?
Oto fragmenty kodu dowiemy się z - kompletny przykład praca jest tutaj 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>
Chciałbym wiedzieć, czy jest to prawidłowe wykorzystanie. Poprzednia wersja była w stanie powiązać zdarzenie za pomocą adresów URL #. Nie widziałem żadnych przykładów wiążących zdarzeń dla adresów URL z tą najnowszą wersją, więc użyłem zdarzenia kliknięcia .on(), aby zadzwonić do Historii i posortować, który link został tam kliknięty.
Nie jestem pewien, czy jest to najlepszy sposób osiągnięcia tego w tym przykładzie.
Jestem trochę późno do partii, ale warto zauważyć, że 'History.pushState ({urlPath: window.location.pathname()}, $ (” title "). text(), State.urlPath);' spowoduje zgłoszenie błędu, ponieważ window.location.pathname() nie jest funkcją. Po prostu usuń nawiasy i działa jak urok. – indextwo
Dzięki za złapanie tego. Nie wiem, jak to przegapiłem, ponieważ myślałem, że wklejałem go z działającej wersji. – dansalmo
@dansalmo, Jeśli zaimplementuję przykład podobny do pokazanego powyżej (http://stackoverflow.com/a/13314438/1867808), to gdzie umieścić dodatkową zawartość względem pliku index.html? Czy umieściłem go w pliku response.html, który znajduje się w tym samym folderze co plik index.html? –