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
<
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.
- Brak
document.write()
. Parser XML nie daje możliwości modyfikowania dokumentu podczas jego parsowania. Zamiast tego należy użyć DOM. - Problemy z
innerHTML
. XML jest problematyczny do przetwarzania fragmentami, dlatego przeglądarki mogą nie obsługiwać tej właściwości (która i tak nie jest częścią standardu). Znów, niestety, należy użyć DOM. - Elementy XHTML z atrybutem
name
nie należą do obiektudocument
, czylidocument.jakaśnazwa
nie działa. Zamiast tego należy korzystać z kolekcjiforms
,links
obiektudocument
np.document.forms.nazwaElementuForm.nazwaElementuInput
lub należy odnaleźć element za pomocą metod DOM, takich jakgetElementById()
czy metody trawersowania drzewa XML (firstChild
itd.).
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