Pracuję nad kodem javascript, i używając window.History.pushState
załadować nowe strony HTML
, zamiast używać tagów href
. Mój kod (który jest działa dobrze) wygląda następująco.window.history.pushState odświeżanie przeglądarki
window.History.pushState({urlPath:'/page1'},"",'/page1')
dziwnie, to nie, czyli przeładowuje przeglądarce
window.History.pushState({urlPath:'/page2.php'},"",'/page2.php')
Ale to działa, treść jest aktualizowana przeglądarka nie odświeżony! (Zauważ, że adres URL jest bezwzględny i nie względny)
window.History.pushState({urlPath:'www.domain.com/page2.php'},"",'www.domain.com/page2.php')
documentation dla window.History.pushState
mówi, że trzeci URL parametr może być bezwzględny lub względny -
URL - URL nowej historii wpisu jest podana przez ten parametr. Uwaga: , że przeglądarka nie spróbuje załadować tego adresu URL po wywołaniu do parametru pushState(), ale może spróbować załadować adres URL później, na przykład po ponownym uruchomieniu przeglądarki. Nowy adres URL nie musi być bezwzględnym numerem ; jeśli jest względny, jest rozwiązywany względem bieżącego adresu URL. Nowy adres URL musi być tego samego pochodzenia co bieżący adres URL; w przeciwnym razie, pushState() spowoduje zgłoszenie wyjątku. Ten parametr jest opcjonalny; jeśli nie jest określony, jest ustawiony na bieżący adres URL dokumentu.
Wydaje się, że bezwzględne adresy URL działają, ale wydaje się, że nie są względne. Dlaczego to się dzieje?
Czy dzieje się to we wszystkich przeglądarkach? Używam względnych ścieżek z 'history.pushState' (przyszłych czytelników, zauważam małe litery' h' w 'historii') całkiem regularnie (i po prostu wypróbowałem to w Firebug) bez powodowania przeładowania. Jakiego innego kodu używasz (jak history.pushState nic nie ładuje, tylko aktualizuje historię i pasek adresu)? – Maverick
Dzieje się to w chrome i firefox. Przetestowałem to w panelu konsoli pod kątem chrome, więc nie ma innego kodu, który mógłby być przyczyną jakiegokolwiek problemu. Ten problem jest widoczny tylko w przypadku kilku adresów URL. Czy może to mieć coś wspólnego z regułami przekierowania (chociaż w dokumentacji mówi się, że ścieżki względne są rozwiązywane do ścieżek bezwzględnych, więc powinno to wpłynąć w równym stopniu na adresy bezwzględne i względne, co nie jest prawdą)? –
Umieść gdzieś swój kod, żebyśmy mogli go obejrzeć. Jak sugerował @ MrN00b, małe litery "h" dla "historii" są ważne. Poniższe działa dla mnie bez odświeżania strony: '$ ('# buttonID'). On ('click', function() {window.history.pushState ({urlPath: '/ page1'}, "", "/ page1 ')});' – SimpleAnecdote