Osadzanie skryptów w XHTML

Kolejność osadzania skryptów ma znaczenie. Będą wykonywane w takiej kolejności, w jakiej zostały umieszczone w kodzie strony.

Przeglądarka może wstrzymywać ładowanie i wyświetlanie strony póki nie wykona skryptu, dlatego najlepiej jest skrypty umieszczać na samym końcu <body>. Pomoże to również uniknąć błędów polegających na odwoływaniu się do elementów strony, które jeszcze się nie załadowały.

Skrypt w kodzie: <script>

Zawartość tego elementu jest skryptem do wykonania. <script> ma obowiązkowy atrybut type, którego wartością ma być text/javascript.

Aby skrypty nie kolidowały ze składnią XHTML należy zamieniać znaki "&" oraz "<" na encje.

 <script type="text/javascript"> if (2 &lt; 4) {}</script>

Można też cały skrypt wsadzić w blok CDATA:

 <script type="text/javascript"><![CDATA[ if (2 < 4) {}]]></script>

Dla kompatybilności z HTML nigdy w skrypcie nie może wystąpić ciąg znaków "</" (ponieważ przeglądarki mogły by go wziąć za początek tagu zamykającego). W stałych napisowych wystarczy zamienić "</" na "<\/". Dodatkowy backslash nie zmieni treści napisu w JavaScript.

W starych kursach możesz spotkać się z sugestią umieszczania skryptu w komentarzu HTML. To jest zupełnie zbędne i w XHTML wręcz nieobsługiwane.

Skrypt w pliku zewnętrznym: <script src="" />

O wiele wygodniej i często wydajniej jest umieszczać skrypty w osobnym pliku. Plik ma zawierać wyłącznie JavaScript, dlatego nie należy używać w nim encji, CDATA i nie trzeba unikać pisania "</".

Dla kompatybilności z HTML należy pisać <script src=""></script> zamiast <script src=""/>.

Ścieżkę do pliku wskazuje atrybut src. Jeśli jest podany, to element <script> ma pozostać pusty. Atrybut type można wtedy pominąć, bo serwer WWW wyśle odpowiedni typ.

Umieszczanie skryptów z cudzego serwera może być niebezpieczne, ponieważ skrypty są w stanie wykradać dane ze strony oraz cookies użytkownika.

Ograniczenia JavaScript w XHTML

W przeglądarkach XHTML JavaScript jest traktowany ściślej i kilka przestarzałych funkcji i konstrukcji nie jest obsługiwanych.

DOMowe nazwy elementów HTML nie zostały wprowadzone (i nie jestem pewien, czy warto)

anchors, applets istnieją tylko dla kompatybilności wstecz i nie są specjalnie użyteczne (forms[0] w 90% przypadków się sprawdza, ale np. zawartość images[0] to ruletka).


Zmodyfikowano: 13.03.2007, 04:23