![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Czy da się za pomocą JS podmienić istniejący plik CSS na nowy, tak, by przeglądarka zapamiętała te zmiany? Dokładnie chodzi mi o coś takiego: Mam <select>'a z wyborem 3 styli CSS. Zmiana polega na tym, że przez AJAXa wysyłane jest zapytanie do pliku HTML, np. style2.html, który zawiera taki kod: Ok - to działa, wygląd strony ulega zmianie, a nazwa nowego stylu (style2.css) zostaje zapisana do bazy dla użytkownika, który zmieniał sobie wygląd strony w opcjach konta. Problem właśnie tutaj się zaczyna. Gdy po zmianie stylu przechodzę na inną podstronę serwisu (za pomocą AJAXa), zmiany odnośnie nowego stylu są zapominane przez przeglądarkę i nowa podstrona jest generowana nadal z użyciem danych ze starego stylu. Przeglądarka "zapamiętuje" nowy styl dopiero wtedy, gdy cała strona zostanie odświeżona i na nowo wygeneruje się kod html zawierający <head> ... </head>. Wczytywanie pliku style2.html na każdej podstronie serwisu, dopóki użytkownik nie odświeży strony jest rozwiązaniem bardzo nieeleganckim. Czy macie jakiś lepszy pomysł jak to zrobić, by przeglądarka zapamiętała nowy styl bez potrzeby odświeżania strony? Ten post edytował Skie 23.07.2009, 21:01:14 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
To co Ty właściwie przez JS wczytujesz...? Razem z HEAD...?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
To co Ty właściwie przez JS wczytujesz...? Razem z HEAD...? Bez HEAD. Podczas wczytywania czegokolwiek nie jest tworzony nowy head ani nic takiego. Dlatego właśnie nie wiem czemu nowy styl przeglądarka nie zapamiętuje. To nic nie daje, bo podmienia adres pliku CSS w tagu HEAD, a przecież do czasu odświeżenia strony kod zawarty pomiędzy <head> i </head> nie jest odświeżany. Ten post edytował Skie 24.07.2009, 11:32:54 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat To nic nie daje, bo podmienia adres pliku CSS w tagu HEAD, a przecież do czasu odświeżenia strony kod zawarty pomiędzy <head> i </head> nie jest odświeżany. To Ty w końcu odświeżasz całą stronę, czy nie...? (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) Przecież jak odświeżasz tylko zawartość, to jak Ci się CSS może zmienić...? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Pisałem dokładnie o co mi chodzi wyżej.
Jak odświeżę całą stronę to ten styl, wiadomo zmienia się, bo powstają od nowa nagłówki <head></head> A chciałbym się dowiedzieć jak takie coś zrobić, żeby bez odświeżenia przeglądarka zapamiętała nowy styl bez potrzeby importowania tego stylu za każdym razem. Wszystkie przykłady jakie znalazłem na necie ograniczają się do podmiany stylu jednorazowo - tak samo to działa jak u mnie z import'em - ale nie powodują one podmianę starego stylu na nowy, lecz tylko chwilową jego zamianę. Póki co rozwiązałem ten problem dodając kod "location.reload();" po wciśnięciu na "Zapisz styl", ale to jest mało zadowalające. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.07.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:41 |