2011-08-25 13 views
6

Wtyczka jQuery HISTORY.js (https://github.com/browserstate/History.js/) udostępnia funkcję implementacji push historii HTML5, a w przypadku nieobsługiwanej przeglądarki powinna być w stanie zaimplementować funkcję hashtag HTML4. Plik dokumentacji/README szczegóły wykorzystania jako tak:Implementowanie History.js HTML4 Fallback

var History = window.History; // Note: We are using a capital H instead of a lower h 
    if (!History.enabled) { 
     // History.js is disabled for this browser. 
     // This is because we can optionally choose to support HTML4 browsers or not. 
     return false; 
    } 

Jak widać, dokumentacja wyjaśnia użycie wtyczki HISTORY.js do punktu HTML5 i nie wyjaśnia wykorzystanie wsparcia HTML4.

Jednak w sekcji „Pobierz & instalacja” dokumentacji, to brzmi:

5. Include History.js 
<script src="http://www.yourwebsite.com/history.js/scripts/compressed/history.js">/script> 
<script src="http://www.yourwebsite.com/history.js/scripts/compressed/history.html4.js"></script> 

Instrukcje tutaj może przekazać, że wsparcie HTML4 hashtag jest automatyczna ale instrukcje na stronie użytkowania sugerują, że musi być ręcznie wdrożony; w moim przekonaniu tak naprawdę jest.

Nie mogę znaleźć żadnej dodatkowej dokumentacji dotyczącej implementacji funkcji hashtag HTML4. Proszę, pomóż mi to zrozumieć.

+0

sposób mieć to napisane, to będzie prawdopodobnie zamknięte. Wyjaśnij, co próbujesz, i wyraźne przykłady tego, co nie działa i gdzie potrzebujesz pomocy. W przeciwnym razie przeczytaj dokumentację narzędzia i poszukaj forum do bardziej ogólnej dyskusji. [Zobacz "Jakiego rodzaju pytań nie powinienem tu pytać?"] (Http://stackoverflow.com/faq#dontask) – OverZealous

+0

Ok, przepraszam. Dzięki, że powiedziałeś mi, co zrobiłem źle. Po prostu myślałem, że jeśli piszę za dużo, ludzie tego nie przeczytają. Będę edytować post, aby wyjaśnić dalej. –

+0

Czy próbowałeś? Wygląda na to, że wtyczka automatycznie ulegałaby degradacji (działałaby z HTML4 bez dodatkowej implementacji). – JJJ

Odpowiedz

1

Ok może problem polegał na tym, że nie korzystałeś z pliku History.js we właściwy sposób (to jest problem, który miałem). Zasadniczo użycie History.js w prawidłowy sposób musisz zrobić coś takiego:

// Register navigation click handlers where you will load Ajax content 
$(window).on('click', 'a.ai1ec-load-view', handle_click_on_link_to_load_view); 
// Bind to the statechange event 
$(window).bind('statechange', handle_state_change); 

// When the state changes, load the corresponding view 
var handle_state_change = function(e) { 
    var state = History.getState(); 
    load_view(state.url, 'json'); 
}; 

// When clicking on a link you want to load, trigger statechange by changing state 
var handle_click_on_link_to_load_view = function(e) { 
    e.preventDefault(); 
    History.pushState({ target :this }, null, $(this).attr('href')); 
}; 

Przedtem ja nie słuchałem statechange i byłem po prostu za pomocą pushState() w module obsługi kliknięcia linku.

Jeśli tak to jak to nie ma potrzeby, aby zakodować krok wstecz, to będzie działać także w przeglądarkach HTML4 (i zakładki z przeglądarek HTML4 będzie działać zgodnie z oczekiwaniami)