Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[JS] Wstawianie arkusza stylów w sekcji meta

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

[JS] Wstawianie arkusza stylów w sekcji meta

Post 14.03.2008, 15:52:50

Witam serdecznie wszystkich użytkowników portalu!

Staram się za pomocą prostego skryptu JS dodać element do sekcji meta mojej strony.
W tejże sekcji umieszczam następujący skrypt:
Kod: Zaznacz cały
<script type='text/javascript'>
if (screen.width = 1024) {
   document.write('<link rel="stylesheet" type="text/css" href="1024.css" title="1024" />');
}
</script>



Jednak okazuje się, że powyższa funkcja JS wstawia mój link CSS nie w sekcji meta, lecz w sekcji body, o czym informuje mnie walidator W3C po sprawdzeniu poprawności kodu:
Line 39, Column 115: document type does not allow element "link" here.


Z góry dziękuję za wszelkie wskazówki i porady.
Stander
Posty: 3
Dołączył(a): 14.03.2008

Post 14.03.2008, 16:35:33

Walidator AFAIK nie interpretuje kodu JS. Problem IMO jest tego typu, że za pomocą JavaScriptu wypisujesz inne elementy HTMLa... Do tego celu służy DOM (document.createElement, element.appendChild, itp.).
Można łatwo oszukać walidator. Najprościej poprzez wstawienie treści skryptu do osobnego pliku. Drugim sposobem będzie np.
Kod: Zaznacz cały
<script type='text/javascript'>
if (screen.width = 1024) {
   document.write('<'+'link rel="stylesheet" type="text/css" href="1024.css" title="1024" /'+'>');
}
</script>

ale jest to tylko oszukiwanie walidatora.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19531
Dołączył(a): 14.04.2002

Post 14.03.2008, 19:08:11

Wielkie dzięki za odpowiedź.
Zdaję sobie sprawę z tego, że żaden walidator nie jest perfekcyjny, dlatego nie będę miał wyrzutów sumienia z powodu jego oszukania :)
Zależy mi jedynie na całkowitej poprawności kodu.
Mógłbym spróbować użyć DOM, ale DOM'em nie wywołam funkcji
Kod: Zaznacz cały
if (screen.width = 1024)
Stander
Posty: 3
Dołączył(a): 14.03.2008

Post 14.03.2008, 19:11:50

Mógłbym spróbować użyć DOM, ale DOM'em nie wywołam funkcji

Przecież DOM służy do manipulowania drzewem dokumentu... więc nie ma to nic do sprawy odczytu rozdzielczości. Po prostu, zamiast document.write stosujesz metody DOM do stworzenia nowego elementu LINK z odpowiednimi atrybutami i wstawienia go do dokumentu. Tylko, że będzie to mniej wygodne ze względu na parę szczegółów... np. muisz odczekać aż drzewo DOM się załaduje.
PS. porównujemy dwoma ==. Jeden = to operator przypisania.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19531
Dołączył(a): 14.04.2002

Post 14.03.2008, 19:17:17

Zgadza się. Dzięki za wskazówki.
Zaraz potestuję wszystko w praktyce :)
Pozdrawiam!
Stander
Posty: 3
Dołączył(a): 14.03.2008


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 1 gość

Hosting, Domeny, SSL
iCash

Subskrypcja

Mamy 50185 zarejestrowanych użytkowników.
Najnowszy użytkownik: sskijop


Nasi użytkownicy napisali:

  • 935002 wiadomości
  • w 246321 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)