Narzedzia internet w 3 ID 5 id Nieznany

background image

1

1

JavaScript - wykład 3

Document Object Model

(Model Obiektów Dokumentu)

Beata Pańczyk

2

DOM W3C

http://kurs.browsehappy.pl/Definicja/DOM

• DOM W3C (nazywany czasem wg wersji: DOM1,

DOM2, DOM3)

• służy głównie do przedstawienia dokumentów

HTML oraz XML (XHTML). Używają go języki
takie jak CSS i Javascript do operowania na
dokumentach

• Wg W3C DOM dokument to drzewiasty zbiór

węzłów. Węzeł może być elementem, ciągiem
tekstu, komentarzem, itp. Każdy węzeł może mieć
jednego rodzica, dowolną ilość braci (lub
sąsiadów) i, jeśli jest elementem, dowolną ilość
dzieci.

3

DOM W3C

4

Metody DOM

element.getElementsByTagName('*')

element *

Potomkowie
(Descendants)

element.childNodes

element > *

Wszystkie dzieci
(Children)

element.lastChild

element >
dziecko:last-child

Ostatnie dziecko
(Last child)

element.firstChild

element >
dziecko:first-child

Pierwsze dziecko
(First child)

element.nextSibling

element + sąsiad

Następny sąsiad
(Next sibling)

element.previousSibling

brak

Poprzedni sąsiad
(Previous sibling)

element.parentNode.parentNode...

brak

Przodek (Ancestor)

element.parentNode

brak

Rodzic (Parent)

element.ownerDocument.documentElement

:root, html

Korzeń (Root)

JavaScript DOM

Selektor CSS

Węzeł

5

Metody DOM

Selektory CSS nie dają możliwości
wybrania przodków, ani poprzedników aby
ułatwić przeglądarkom wyświetlanie
progresywne (element występujący później
w dokumencie nie powinien

mieć wpływu na wcześniejsze) oraz

uniemożliwić zrobienie kombinacji
selektorów dających błędne koło.

6

Inne modele dokumentu

• DOM Netscape (DOM0) - znacznie różniący się

od W3C DOM, był częścią pierwotnego języka
Javascript wprowadzonego przez Netscape.
Dzielił dokument na kolekcje obrazków, linków,
fomularzy, itp. Część z tych rozwiązań została
zachowana w W3C DOM dla kompatybilności
wstecz

• DOM Microsoft (DHTML) document.all był

zbiorem wszystkich elementów posortowanym wg
ich identyfikatora, kolejności w dokumencie lub
nazwy tagu. Microsoft porzucił swój DOM na
rzecz tego z W3C

background image

2

7

DOM dla JavaScript

• DOM - sposób przedstawienia dokumentu; zestaw metod i pól,

które umożliwiają odnajdywanie, zmienianie, usuwanie i dodawanie
elementów

• DOM W3C (dwie części):

podstawowy (ang. core) to ogólny sposób reprezentowania

dokumentów XML; przedstawia dokument jako drzewo
zawierające węzły (ang. node). Każdy węzeł może być
elementem, fragmentem tekstu, komentarzem, instrukcją
preprocesora (np. dołączonym fragmentem PHP) albo encją

– DOM HTML (typowy dla przeglądarek) - to zestaw metod

ułatwiających tworzenie dynamicznych stron oraz
zapewniających kompatybilność wstecz z wcześniejszym
prostym DOM Netscape. DOM HTML przedstawia dokument
jako kilka kolekcji obiektów określonych typów (np. formularze,
obrazki) oraz dodaje pola/metody ułatwiające dostęp do
funkcjonalności specyficznej dla HTML, jak np. odczyt pól
formularza.

8

Podstawowe obiekty

window

- główny, globalny obiekt w

DOM; w nim przechowywane są
wszystkie globalne zmienne i funkcje; w
nim jest także obiekt document, który
reprezentuje całą stronę XHTML

document.documentElement

- główny

element dokumentu (korzeń), czyli <html>

document.body

- obiekt reprezentujący

<body> dokumentu.

9

Odnajdywanie elementów (1)

getElementById(id) - po identyfikatorze

var elid = document.getElementById('elid')
if (!elid) alert('nie ma elementu o tym id!')

getElementsByTagName(nazwa) - po nazwie elementu;

zwraca kolekcję wszystkich elementów, które mają
określoną nazwę; * zamiast nazwy - wszystkie elementy;
wywołanie metody na dowolnym elemencie – zwraca tylko
elementy w nim zawarte:
var bary = elid.getElementsByTagName('bar')
for(i=0;i<bary.length;i++) bary[i]
bary - kolekcja (tablica) wszystkich elementów o nazwie
bar wewnątrz elementu reprezentowanego przez obiekt elid
Kolekcje reagują na zmiany w dokumencie - jeśli element
zostanie usunięty z dokumentu, to zniknie także ze
wszystkich kolekcji

10

Skakanie po węzłach (elementach)

Każdy węzeł (czyli element, fragment tekstu, komentarz) posiada

pola wskazujące na jego sąsiednie węzły

Kolekcja wszystkich węzłów zawartych w tym
elemencie

ChildNodes

Element, w którym zawarty jest ten element

ParentNode

Sąsiedni węzeł za tym elementem

Next sibling

Sąsiedni węzeł przed tym elementem

Previous sibling

Ostatni węzeł zawarty w tym elemencie

Last child

Pierwszy węzeł zawarty w tym elemencie

First child

Element

Nazwa pola

11

Wyszukiwanie tylko elementów

Domyślnie pola wskazują na dowolne węzły, łącznie z tekstem i
komentarzami w dokumencie

Elementy od innych węzłów można odróżnić za pomocą pola
nodeTyp:

if (element.nextSibling && element.nextSibling.nodeType == 1)
alert('sąsiedni węzeł jest elementem')

COMMENT_NODE

ENTITY_NODE

TEXT_NODE

ELEMENT_NODE

Stała

Komentarz

8

Encja

6

Tekst

3

Element

1

Znaczenie

Wartość

12

Atrybuty

getAttribute(nazwa) – odczyt, zwraca null jeżeli atrybut nie

istnieje

setAttribute(nazwa,wartość) – ustawianie
removeAttribute(nazwa) – usuwanie
hasAttribute(nazwa) - sprawdzenie czy dany atrybut istnieje
Np.:

<a href="http://kurs.browsehappy.pl/" rel="archive" id="kurs">

Kurs BrowseHappy</a>

anchor = document.getElementById('kurs');
var anchorRel = anchor.getAttribute('rel');
alert(anchorRel); //zwróci warto

ść

atrybutu rel

if(anchor.hasAttribute('class'))

var anchorClassName = anchor.getAttribute('class');

alert(anchorClassName); //je

ż

eli istnieje class, to zwróci jego

warto

ść

anchor.setAttribute("rel", "kurs"); //nadpisze rel

anchor.setAttribute("lang", "pl"); //stworzy nowy atrybut i

// przypisze mu warto

ść

background image

3

13

Usuwanie, tworzenie i dodawanie

elementów

removeChild - metoda pozwalającą (każdemu elementowi)

usunąć jeden z węzłów w nim zawartych
element.parentNode.removeChild(element)

• element usunięty z dokumentu nie jest całkowicie niszczony i

może zostać ponownie dołączony do dokumentu

document.createElement(nazwa) – tworzy element, który nie

jest połączony z dokumentem - trzeba go dodać za pomocą

appendChild lub insertBefore
• Tekst tworzy się za pomocą:

document.createTextNode("tekst")
podobnie jak elementy trzeba go wstawić do dokumentu, żeby
stał się widoczny.

14

Tworzenie, dodawanie i przenoszenie

elementów - przykład

• Np.

var p = document.createElement('p');
document.body.appendChild(p);
var h1 = document.createElement('h1');
document.body.insertBefore(p,document.body.firstChild);

• Komentarz:

– appendChild() element podany jako argument dołącza jako

dziecko na koniec elementu, z którego została wywołana

– insertBefore przyjmuje dwa argumenty — element do

wstawienia oraz element przed, którym ma wstawić nowy.
Jeśli jako drugi argument poda się null, to zadziała tak samo
jak appendChild

– wykonanie appendChild lub insertBefore na elementach, które

są już w dokumencie przeniesie je w nowe miejsce

15

Przykład 1 – JavaScript i DOM

<head>

<meta http-equiv="Content-type"

content="application/xhtml+xml;
charset=iso-8859-2" />

<title> DOM i JavaScript </title>
<script type="text/javascript"

src="js_dom.js"> </script>

</head>
<body onload="process()">

<p>Lista kolorów:</p>
<div id="lista_kol"></div>

</body>

16

Przykład 1 – JavaScript i DOM

Plik js_dom.js

function process()
{ // tworzenie kodu HTML

var lista;
lista = "<ul>" + "<li>Czarny</li>"

+ "<li>Pomara

ń

czowy</li>"+ "<li>Ró

ż

owy</li>"

+ "</ul>";

// pobranie odwołania do elementu <div> na stronie
myDiv = document.getElementById("lista_kol");
// dodanie zawarto

ś

ci do elementu <div>

myDiv.innerHTML = lista;

}

17

Przykład 1 – JavaScript i DOM

Plik js1_dom.js

function process()
{// tworzy pierwszy w

ę

zeł tekstowy

oHello = document.createTextNode ("Lista kolorów:");
// tworzy element <ul>
oUl = document.createElement("ul")

// tworzy pierwszy element <ui> i dodaje do niego w

ę

zeł tekst.

oLiBlack = document.createElement("li");
oBlack = document.createTextNode("Czarny");
oLiBlack.appendChild(oBlack);

// tworzy drugi element <ui> i dodaje do niego w

ę

zeł tekstowy

oLiOrange = document.createElement("li");
oOrange = document.createTextNode("Pomara

ń

czowy");

oLiOrange.appendChild(oOrange);

18

Przykład 1 – JavaScript i DOM

Plik js1_dom.js

// tworzy trzeci element <ui> i dodaje do niego w

ę

zeł tekstowy

oLiPink = document.createElement("li");
oPink = document.createTextNode("Ró

ż

owy");

oLiPink.appendChild(oPink);

// dodaje elementy <ui> do elementu <ul> jako jego potomstwo

oUl.appendChild(oLiBlack);
oUl.appendChild(oLiOrange);
oUl.appendChild(oLiPink);

// pobiera odwołanie do elementu <div> na stronie

myDiv = document.getElementById("lista_kol");

// dodaje zawarto

ść

do elementu <div>

myDiv.appendChild(oHello);
myDiv.appendChild(oUl);

}

background image

4

19

Przykład 2 – DOM, JS i CSS

<head>
<script type="text/javascript„ src="csstest.js"></script>
<link href="styles.css" type="text/css" rel="stylesheet"/>
</head>
<body>

<table id="table">

<tr><th id="tableHead">Technologie internetowe</th> </tr>
<tr><td id="tableFirstLine"> XHTML/CSS </td> </tr>
<tr><td id="tableSecondLine">JavaScript </td> </tr>

</table> <br />
<input type="button" value="Ustaw Styl 1"

onclick="setStyle1();" />

<input type="button" value="Ustaw Styl 2"

onclick="setStyle2();" />

</body> </html>

20

Przykład 2 – csstest.js

// Zmiana stylu tabeli na styl 1
function setStyle1() {

// pobranie odwołań do elementów HTML
oTable = document.getElementById("table");
oTableHead = document.getElementById("tableHead");
oTableFirstLine = document.getElementById("tableFirstLine");
oTableSecondLine = document.getElementById("tableSecondLine");
// ustawienie styli
oTable.className = "Table1";
oTableHead.className = "TableHead1";
oTableFirstLine.className = "TableContent1";
oTableSecondLine.className = "TableContent1";

}

21

Przykład 2 – csstest.js

// Zmiana stylu tabeli na styl 2
function setStyle2() {

// pobranie odwołań do elementów HTML
oTable = document.getElementById("table");
oTableHead = document.getElementById("tableHead");
oTableFirstLine = document.getElementById("tableFirstLine");
oTableSecondLine = document.getElementById("tableSecondLine");
// ustawienie styli
oTable.className = "Table2";
oTableHead.className = "TableHead2";
oTableFirstLine.className = "TableContent2";
oTableSecondLine.className = "TableContent2";

}

22

Przykład 2 – styles.css

.Table1 {

border: DarkGreen 1px solid;

background-color:LightGreen;}

.TableHead1 { font-family: Verdana, Arial; font-weight: bold;

font-size: 10pt; }

.TableContent1{ font-family: Verdana, Arial; font-size: 10pt; }

.Table2 {

border: DarkBlue 1px solid;

background-color:LightBlue;}

.TableHead2 { font-family: Verdana, Arial; font-weight: bold;

font-size: 10pt; }

.TableContent2 { font-family: Verdana, Arial; font-size: 10pt; }

23

Przykład 2 – wynik działania

24

Obiekty stron WWW

Obiekty każdej strony:

• navigator

informacje o przeglądarce

• window

bieżące okno przeglądarki

• document

bieżący dokument HTML

• location

bieżący adres URL

• history

lista historyczna przeglądarki

Obiekty dodatkowe:

• anchor

• link

• image

• form

• plugin

• mimeType

background image

5

25

Schemat dziedziczenia obiektów

strony WWW

window

document

location

history

frame

navigator

layer

image

link

area

anchor

applet

embed

form

plugin

mimeType

element

26

Obiekt

window

• Reprezentuje widoczne okno przeglądarki
• Jest tworzony automatycznie w chwili

otwarcia okna przeglądarki

• Stoi na czele hierarchii obiektów JavaScript
• W odwołaniu do właściwości i metod okna

bieżącego - nazwa

window

niekonieczna

• Przykład

alert("Uwaga!");

window.alert("Uwaga!");

27

Metody obiektu

window

• alert(

"

komunikat

"

)

wyświetla komunikat w okienku dialogowym
z przyciskiem OK

• zmienna=window.prompt(

"

komunikat

"

,

"

warto

ść

_domy

ś

lna

"

)

- wyświetla okienko

dialogowe z promptem o treści komunikat i
zwracająca dane wprowadzone przez użytkownika

• confirm(

"

komunikat

"

)

wyświetla komunikat w okienku dialogowym
z przyciskiem OK i Cancel; metoda zwraca wartość
true, gdy użytkownik wybierze przycisk OK i false w
przeciwnym razie

• Status -

wyświetla komunikat na pasku stanu

28

Metody obiektu

window

• open("URL", "nazwa okna", cecha1,

cecha2,...)

- otwiera nowe okno przeglądarki z

podanymi cechami

• close()

- likwiduje okno, w którym metoda występuje

• setTimeout("zadanie", czas)

wykonuje

zadanie

(wyrażenie lub funkcję) po upływie

podanego

czasu

(w milisekundach)

• setInterval

("funkcja", czas [,argumenty])

wywołuje funkcję w regularnych odstępach czasu (w
milisekundach); v. 1.2

• Zatrzymanie wykonywania metod:

clearTimeout(identyfikator)
clearInterval(identyfikator)

29

Przykład - ruchomy napis w pasku stanu

<head> <script type="text/javascript">

var napis="Witamy!!! ";

var i=0;
function przewijaj(){
n1=napis.substring(i, napis.length);
n2=napis.substring(0,i);
status=n1+n2;

if(i<napis.length) i++; else i=0;

setTimeout("przewijaj();",200);}

</script>

</head> <body onload="przewijaj();">

</body></html>

30

Własności obiektu

window

• self

wskazuje bieżące okno

• parent

wskazuje okno rodzicielskie ramki

• top

wskazuje okno najwyższego rzędu,
"właściciela" wszystkich ramek

• name

wewnętrzny identyfikator okna
(ramki)

• frames

tablica ramek potomnych w oknie

• document

wskazuje bieżący dokument

background image

6

31

Tablice obiektów standardowych

• Zawierają wszystkie zdefiniowane

w obiekcie znaczniki danego typu

• Indeksy pól tablic - nadawane według

kolejności definiowania danego rodzaju
znaczników

• Przykład - określenie liczby formularzy w

oknie:

forms.length

32

Obiekt

document

• Tworzony automatycznie przez znacznik

<body>

• Zawiera

– wszystkie informacje na temat aktualnie

wyświetlanego dokumentu HTML

– wszystkie elementy składowe dokumentu

• Elementy składowe - w tablicach

33

Własności obiektu

document

• alinkColor

parametr alink znacznika
<body>

• vlinkcolor

parametr vlink znacznika
<body>

• bgcolor

parametr bgcolor znacznika
<body>

• fgcolor

parametr text znacznika
<body>

• title

tytuł strony (znacznik <title>)

• url

adres URL dokumentu

34

Tablice obiektu

document

• anchors

tablica obiektów typu

anchor

• links

tablica obiektów typu

link

• images

tablica obiektów typu

image

• frames

tablica obiektów typu

frame

• forms

tablica obiektów typu

form

• embeds

tablica obiektów typu

embed

• applets

tablica obiektów typu

applet

• layers

tablica obiektów typu

layer

35

Metody i zdarzenia dla obiektu

document

• Metody:

– document.clear()

- czyszczenie bieżącego okna

– document.write(

"

tekst

"

)

- wyświetla tekst w

oknie np. document.write(" <h1>Dziekujemy</h1> ")

– document.writeln("tekst")

• Zdarzenia:

onLoad - wyzwala skrypty, które powinny zostać

uruchomione bezpośrednio po zakończeniu ładowania
dokumentu HTML do przeglądarki

onUnload - wyzwala skrypty, które powinny zostać

uruchomione bezpośrednio po wyjściu z dokumentu
HTML

36

Przykładowa strona WWW

images[0]

forms[0]

elements[0]
elements[1]
elements[2]

elements[3]

links[1]

links[0]

background image

7

37

Zależności hierarchiczne tablic

• Hierarchia obiektów strony WWW

• Odwołanie do wartości pola

nazwisko

document.forms[0].elements[1].value

• Nadawanie obiektom nazw, np.

document.formularz.nazwisko.value

document

links[0]

images[0]

forms[0]

links[1]

elements[0] elements[1] elements[2] elements[3]

38

Obiekt

location

• Zawiera adres URL aktualnego dokumentu

• Pełna postać adresu URL

protocol//host:port/pathname#hash?search

• Zmiana dokumentu wyświetlanego w oknie

nazwa_okna.location=nowy_adres

• Przykład - kierowanie użytkownika na inną stronę

<a href="brak_js.html"
onclick="window.location='jest_js.html';

return false;">zapraszamy</a>

39

Własności obiektu

location

• href

pełny adres URL

• protocol

protokół - np.

http:

• host

nazwa serwera

• port

port, przez który należy się łączyć
z serwerem
(zwykle

location.port=''

)

• hostname

to sam, co

host:port

• pathname

ś

cieżka dostępu do dokumentu

• hash

zakotwiczenie w dokumencie

• search

dodatkowe parametry

40

Obiekt

history

• Zawiera informacje na temat adresów

dokumentów HTML, które były ostatnio
ładowane przez przeglądarkę (odpowiada
liście historycznej przeglądarki)

• Adresy URL - przechowywane w formie

łańcuchów tekstowych

41

Metody obiektu

history

• back

()

przejście o jedno miejsce na
liście wstecz

• forward

()

przejście o jedno miejsce na
liście w przód

• go

(liczba)

przejście w miejsce

określone liczbą, np.

go(-1)

=

back()

• go

("łańcuch")wyszukuje najbliższy adres

zawierający podany łańcuch

42

Przykład - obiekt

history

<html> <body>
<!-- ewentualna zawarto

ść

strony -->

<form>
<input type="button" value="wstecz"

onclick="history.back();"/>

<input type="button" value="dalej"

onclick="history.forward();"/><br/>

</form>
</body>
</html>

background image

8

43

Własności obiektu

navigator

• Służy do ustalenia wersji przeglądarki używanej

przez użytkownika (funkcja informacyjna -dane do
odczytu)

• appCodeName

- nazwa kodowa przeglądarki

• appName -

nazwa przeglądarki

• appVersion -

numer wersji przeglądarki

• userAgent -

pełna informacja o przeglądarce

• language -

wersja językowa przeglądarki

• platform -

system operacyjny przeglądarki

44

Własności obiektu

mimeType

• type

nazwa typu MIME

• description

opis typu
(np. "GIF Image")

• suffixes

możliwe rozszerzenia pliku
(np. GIF)

• enabledPlugin

odsyłacz do obiektu

plugin

skonfigurowanego

dla danego typu MIME

45

Obiekt

plugin

• Obiekt typu

plugin

- tablica zawierąjącą

podstawowe dane typu MIME danego modułu

• Właściwości obiektu

plugin

– name

nazwa plug-ina

– description

opis

– filename

nazwa pliku z programem

– length

liczba typów MIME
obsługiwanych przez plug-in

46

Przykład - kontrola

przeglądarki i plug-ina

<head>

<script type="text/javascript">

document.write("<h3>"+navigator.appName+"</h3>");

ile=navigator.plugins.length; //ilo

ść

plug-in

if (ile>0){for (i=0; i<ile; i++)

document.write("Plug-in:"+navigator.plugins[0].name+"<br/>");}

else document.write("Brak plug-in");

</script>

</head>

<body></body>

</html>


Wyszukiwarka

Podobne podstrony:
Narzedzia internet w 1 ID 5 id Nieznany
Narzedzia internet w 2 ID 5 id Nieznany
Arkana radiowego internetu 2 id Nieznany (2)
Arkana radiowego internetu id 6 Nieznany
17 12 2013 Sapa Internet[1]id 1 Nieznany (2)
Narzędzia internet w 4 ID 5
Narzędzia internet w 5 ID 5
17 Narzedzia internetowe NPF id Nieznany
5 11 2013 Sapa Internet id 3993 Nieznany (2)
poradnik internetocholika id 37 Nieznany
konspekty z internetu id 246070 Nieznany
literatura internet id 270916 Nieznany
cit 2007 w interneciejw id 1173 Nieznany
Gieldy interna id 190819 Nieznany

więcej podobnych podstron