• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem z push state

Cloud VPS
0 głosów
206 wizyt
pytanie zadane 4 maja 2018 w JavaScript przez niezalogowany

mam taką funkcje:

function getPage(page){
  console.log("sprawdzanie strony");
  if(actPage == page){return}
  console.log("ustawianie strony strony");
  actPage = page;
  $(".progressbar").fadeIn(50);
  console.log("ajax");
  $.ajax({
      url         : "DashBoard/"+page+".php",
      type        : "post",
      dataType    : 'text'
  }).done(function(response) {
    if(response != ""){
      $(".content").html(response);
      $(".progressbar").fadeOut();
    }
  });
  console.log("push state");
  history.pushState(null, '#' +page, '#' +page);
}

wykonuje się ona albo po kliknięciu w dane hiperłącze w nawigacji (onClick) albo po odświeżeniu strony "document.onLoad". podmienia mi kontent, oraz hash w pasku. wszystko ładnie pięknie, ale push state chyba mi źle zapisuje strone, bo gdy klikam w przeglądarce powrót do poprzedniej strony, to hash w pasku przeglądarki  się zmienia, ale strona ani drgnie. więc mam pytanie. jak tego używać :D ?  dodam ze przeglądarka to najnowszy zaktualizowany firefox

komentarz 4 maja 2018 przez ScriptyChris Mędrzec (190,190 p.)

Czym dokładnie jest parametr page? Czy w konsoli są błędy? Sprawdź też przed i po użyciu metody history.pushState zawartość obiektu history - czy zaszły tam zmiany?

komentarz 4 maja 2018 przez niezalogowany
żadnych błędów, page to hash. działa to dokładnie tak:

- mam listę, w której każdy element listy ma atrybut onClick="getPage('page')" <--- z czym gdzie page to właśnie konkretny hash.

- uruchamia się ta funkcja która do diva content zaczytuje odpowiedni plik PHP ajaxem oraz zapisuje push statem adres (w tym przypadku hash)

i właśnie ten push state nie działa tzn. adres w pasku przeglądarki jest ładnie podmieniany na odpowiedni stary hash, ale zawartość strony się nie zmienia
komentarz 4 maja 2018 przez niezalogowany

Problem z teorii mozan uznać za rozwiązany, wykorzystałem te 2 funkcje:
 

function firstLoad(){
  var hash = window.location.hash;
  hash = hash.substr(1);
  actPage = hash;
  $(".progressbar").fadeIn(50);
  $.ajax({
      url         : "DashBoard/"+hash+".php",
      type        : "post",
      dataType    : 'text'
  }).done(function(response) {
    $(".container").html(response);
    $(".progressbar").fadeOut();
  });
}
window.onpopstate = function(event) {
   var hash = document.location.hash.substr(1);
   firstLoad(hash);
};

nie jest to najlepszy kod, ale moze komuś się przyda :p

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 193 wizyt
pytanie zadane 18 lipca 2018 w JavaScript przez mihalrudy Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 177 wizyt
pytanie zadane 28 grudnia 2018 w JavaScript przez Maikeru Początkujący (250 p.)
0 głosów
2 odpowiedzi 228 wizyt
pytanie zadane 24 września 2018 w JavaScript przez LCPGM Obywatel (1,550 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...