Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nawigacja bez przeładowywania
Forum PHP.pl > Forum > Po stronie przeglądarki
croc
Witajcie,

czy istnieją biblioteki/frameworki pozwalające na stworzenie strony, która opierałaby się w 100% na Ajaxowych ładowaniach podstron? Mam na myśli rozwiązanie, które ułatwiałoby tworzenie dwóch wersji strony w zależności od działania JavaScript w przeglądarce:

  1. Bez JavaScript - klasyczna wersja, gdzie każda podstrona miałaby swój link
  2. Z JavaScript - tu każdy link otrzymałby po wczytaniu strony dynamicznie zdarzenie onclick z parametrem oryginalnego hrefa, które wczytywałoby jedynie zawartość bloku głównego i za pomocą DHTML odpowiednio podświetlałyby się elementy menu.

Czy jest już takie rozwiązanie? Co myślicie w ogóle o takiej idei?
Sephirus
O rany ;P Po co odrazu cały framework smile.gif

1. Poczytaj sobie o czymś co "ciekawi ludzie" nazwali AHAH - to jest mniej więcej to czego szukasz...
2. Idea jest baaardzo prosta, przedstawię Ci na prostym przykłądzie jak to zrobić bez żadnych bibliotek tongue.gif

Wszystkie linki muszą mieć postać:

  1. <a href="http://strona.html" onclick="doAhahRequest('http://strona.html')">Link</a>


I teraz tak. Funkcja "doAhahRequest" powinna być napisana i skonfigurowana tak, by wywołała ajaxa na podany adres, i zwracała false oraz (poczytaj o tym) blokowała bąbelkowanie i domyślne eventy. Dzięki temu - jeśli JS będzie wyłączony będzie działał po prostu "href". Ajax po odczytaniu strony powinien oczywiście ładować tą stronę do okreslonego kontenera (div'a czy czegoś takiego).

I teraz najważniejsze. Strona zwrócona normalnie rózni się od strony zwróconej z ajaxa. Ta z ajaxa nie potrzebuje nagłówka i stopki itp... liczy się sama treść. Nic prostszego wystarczy zawsze przy wywoływaniu jakiejś strony wysyłać dodatkową informację dołączoną do requesta AJAX. Na przyklad jako GET albo (co ja bym preferował) jakiś niestandardowy nagłówek ustawiany w ajaxie przy wysłaniu. Skrypt to rozpozna i zwróci stronę całą lub tulko ajaxową treść smile.gif

Samą zamianę odnośników można zrobić w prosty sposób pisząc na przykład jakąś funckję w PHP typu "generateLink($url,$title)" w której podajesz adres i generowany jest cały tag "A".

proste? A działa bardzo ładnie wink.gif

HTH! wink.gif

P.S. Możesz też oczywiście te linki zmieniać dynamicznie JS'em przy ładowaniu ale z doświadczenia wiem, że to nienajlepsze rozwiązanie - dlaczego? Zasada jest prosta. uruchamiam skrypt po załadowaniu strony, który ma dynamicznie zaktualizować wszystkie "A". Powiedzmy, że na stronie mam na przykład reklamę z innej strony, która czasami potrafi dłuuugo się ładować smile.gif user wchodzi, widzi link który go interesuje i klika (zanim reklama się załadowała - czyli zanim załadowała się strona - czyli linki nie były podmienione) wink.gif
croc
Ja wiem jak to ma działać. Framework dlatego, żeby to wszystko uprościć i nie robić od zera samemu. Poza wczytywaniem treści z linków chodzi o zachowanie elementów, które nie są przeładowywane, obsługę formularzy itd. oraz jednoczesne generowanie treści dla PHP i JavaScript. Zamiast groteskowego wysyłania parametrów GET-em lepiej zrobić mapę linków w PHP definiującą co ma się dziać. No i jednak jestem za dynamicznym przypisywaniem zdarzeń onclick, bo nie chcę tego w kodzie HTML.
Sephirus
Cytat(croc @ 19.10.2011, 14:10:02 ) *
Zamiast groteskowego wysyłania parametrów GET-em lepiej zrobić mapę linków w PHP definiującą co ma się dziać.


Widzisz smile.gif zależy kto co lubi - moje rozwiązanie jest na bank uniwersalne - twoje - no cóż mapa linków... zresztą ja tam pisałem też o nagłówkach - co sam sprawdziłem i działa wyśmienicie też bym nie chciał takich brzydkich getów...

onclick - można ładnie zamienić na jakąś "nibyklasę css" <a class="klasa niby_klasa" href="...">...</a> i puścić skrypt który to wszystko prześwietli po załadowaniu strony, ale nie przy pomocy eventu onload - raczej jako skrypt na końcu - w razie jakiegoś zewnętrznego bytu, który będzie się nam godzinę ładował na stronie nie wywołując "onload".

Co do formularzy itp. też można to JS'em wykryć i podpiąć pod to ajax.

Nie wiem jak tobie - mi się wydaję, że jest to dość łatwo zrobić samemu i dość szybko i masz pewność, że będzie działało jak chcesz - znalezienie gotowca, który zaspokoi twoje wymagania może być trudne - a przerabianie + szukanie czasowo może = tworzenie od nowa ;P

Sądzę że w parę godzin zrobiłbym taki systemik czyli konfiguracja AJAXa, funkcja podmieniająca to co trzeba, odczyt w PHP - byłby dość uniwersalny i prosty i co najważniejsze nie ingerujący w SEO smile.gif
ale ok... już nic nie mówię smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.