Czy ktoś wie o bibliotece, która określa, czy można użyć parametru pushState?Można używać pushState
używałem to:
if(window.history.pushState){
window.history.pushState(null, document.title, path);
}else{
location.pathname = path;
}
Ale ja po prostu okazało się, że jest to błąd w Safari 5.0.2, która powoduje to, aby nie pracować, mimo że powyższe testy przechodzi: http://support.github.com/discussions/site/2263-line-links-broken.
Wydaje mi się, że mogą istnieć inne potagi i ktoś prawdopodobnie już je znalazł i owinął je, ale nie znalazłem jeszcze nic.
Edit: @Crescent Fresh
Z tego co widziałem to wydaje się pushState naciska na historii stosu i zmienia adres URL, ale nie aktualizuje location.pathname. W moim kodzie używam setInterval, aby sprawdzić, czy ścieżka została zaktualizowana.
var cachedPathname = location.pathname;
if(window.history.pushState){
cachedPathname = location.pathname;
setInterval(function(){
if(cachedPathname !== location.pathname){
cachedPathname = location.pathname;
//do stuff
}
}, 100);
}
W przeglądarce Safari 5.0.2 nazwa location.pathname nie zmienia się, gdy parametr pushState zmienia adres URL. Działa to w innych przeglądarkach i wersjach Safari.
Która część tej połączonej strony mówi, że testowanie dla 'window.history.pushState' jest nieprawidłowe? Wygląda na to, że błąd jest związany z czymś, co robi konkretny github ('pushState' w połączeniu z ustawieniem' location.hash', z tego, co mogę zebrać). –