92
Javascript, DOM, DHTML

Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Javascript, DOM, DHTML

Page 2: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

DHTML Dynamic HTML

Kako napraviti web stranice interaktivnim i dimamičnim

Korištenjem:

CSS-a

JavaScripta

DOM

Eventa

2

Page 3: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Klijentsko i serversko skriptiranje (2)

Važno je znati što se može obaviti klijentskim, a što serverskim skriptiranjem

3

Internet

1. Klijent zahtjeva web-stranicu2. Poslužitelj prima zahtjev i učitava traženu stranicu

3. Izvršavaju se serverske skripte na stranici4. Rezultat je HTML stranica

koja se šalje natrag klijentu

5. Klijent primastranicu i prikazujeju u pregledniku

6. Izvršavaju seklijentske skripte

Page 4: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Što je JavaScript? JavaScript je programski jezik više razine

osmišljen da doda interaktivnost na web stranice.

Objektno orijentirani jezik

Untyped – tip podatka ne mora biti specificiran

JavaScript je skriptni jezik – nije ga potrebno kompajlirati – izvršava se liniju po liniju

Po sintaksi jako sličan Javi i C-u

4

Page 5: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Kako uključiti JS u HTML stranice? Skripte napisane u body dijelu izvršiti će se dok se

stranica učitava.

Skripte napisane u head dijelu izvršiti će se tek kada ih pozovemo.

5

Page 6: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Objekti Velik broj ugrađenih klasa

Klasa:

Svojstva

Metode

Objekt klase

(Object, Number, String, Date, Array, Boolean, Math, RegExp.....)

Page 7: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

DOM Document Object Model

Standard za pristupanje dijelovima dokumenata (HTML,XML)

Razine

Core DOM

XML DOM

HTML DOM

Definira objekte dokumenta, svojstva objekata i metode za pristup svojstvima

Page 8: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

HTML DOM (Document Object Model) The W3C Document Object Model (DOM) is a platform and

language neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document.

HTML DOM je Document Object Model za HTML

HTML DOM je neovisan o platformi i jeziku

HTML DOM definira standardni skup objekata za HTML, i standardni način pristupa HTML dokumentu

HTML DOM je W3C standard

8

Page 9: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

DOM Kad učitamo stranicu u preglednik, on stvori

određen broj objekata s obzirom na sadržaj stranice.

Objekti koje svaka stranica ima su: window objekt naviše razine, sadrži svojstva koja se

odnose na čitav prozor

location sadrži svosjtva tekuće URL adrese

history sadrži svojstva URL-ova koje je korisnik prije posjetio

document sadrži svojstva sadržaja tekućeg dokumenta, kao što su naziv, pozadinska boja i formular

9

Page 10: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Client-side object hierarchy

10

windowwindow

self,...self,...

navigatornavigator

frames[]frames[]

locationlocation

historyhistory

documentdocument

screenscreen

forms[]forms[]

anchors[]anchors[]

links[]links[]

images[]images[]

applets[]applets[]

embeds[]embeds[]

elements[]

such as the

input objects

and the

textarea

object

elements[]

such as the

input objects

and the

textarea

object

Level 0 DOMLevel 0 DOM

Page 11: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora
Page 12: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Ukoliko definiramo nekoliko tekstualnih elemenata:<FORM NAME="iskaznica">

<input type="text " name="ime" size=20>

<input type="text" name="dob" size=3>

ovi elementi se zrcale u JavaScript objekte: document.iskaznica.ime i document.iskaznica.dob

koje možemo koristiti bilo gdje, nakon što je formular definiran.

Možemo ih ispisati u skripti, koju pišemo nakon što je formular definiran:

<SCRIPT>

document.write(document.iskaznica.ime)

document.write(document.iskaznica.dob)

</SCRIPT>12

Page 13: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Document Document je najkorisniji objekt. Zbog toga što ima write i writeln metode može generirati HTML kod, pa tako imamo:

document.write(“Dobar dan!")

što daje izlaz:

Dobar dan!

13

Page 14: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

document.write()Dodavanje dinimičkog sadržaja u stranicu

<html>

<body>

<script type="text/javascript">

document.write(Date());

</script>

</body>

</html>

14

Page 15: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JavaScript i HTML DOM Sa HTML 4, JavaScript se može koristiti za dinamičko

mijenjanje unutarnjih HTML elemenata i atributa

Za promjenu sadržaja unutar HTML elementa:

document.getElementById(id).innerHTML=new HTML

Za promjenu HTML atributa:

document.getElementById(id).attribute=new value

15

Page 16: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

HTML DOM metode i svojstva najčešće korištene metode HTML DOM

getElementById(id) - get the node (element) with a specified id

appendChild(node) - insert a new child node (element)

removeChild(node) - remove a child node (element)

najčešće korištena HTML DOM svojstva innerHTML - the text value of a node (element)

parentNode - the parent node of a node (element)

childNodes - the child nodes of a node (element)

attributes - the attributes nodes of a node (element)

Page 17: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Dohvaćanje elemenata getElementById()

getElementsByTagName()

getElementsByClassName()

document.getElementById("intro");

document.getElementsByTagName("p");

document.getElementById("main").getElementsByTagName("p");

document.getElementsByClassName("intro");

Page 18: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

document.getElementById<script type="text/javascript">

function notEmpty()

{

var myTextField = document.getElementById('myText'); if(myTextField.value != "")

alert(“Upisali ste: " + myTextField.value)

else alert("Would you please enter some text?")

}

</script>

<input type='text' id='myText' />

<input type='button' onclick='notEmpty()' value='Form Checker' />

Page 19: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JavaScript i HTML Eventi Jednostavan primjer događaja bi bio – ukoliko korisnik

klikne na određeni element, izvršava se JavaScript kod:

onclick=JavaScript

19

Page 20: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JavaScript i CSS Uz pomoć HTML 4 i JavaScript-a može se mijenjati i stil.

Za promjenu stila određenog HTML dokumenta:

document.getElementById(id).style.property=new style

20

Page 21: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

EventiHTML 4 event handlers:

onabort a user aborts page loading

onblur a user leaves an object

onchange a user changes the value of an object

onclick a user clicks on an object

ondblclick a user double-clicks on an object

onfocus a user makes an object active

onkeydown a keyboard key is on its way down

onkeypress a keyboard key is pressed

onkeyup a keyboard key is released

21

Page 22: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

EventiHTML 4 event handlers:

onload a page is finished loading

onmousedown a user presses a mouse-button

onmousemove a cursor moves on an object

onmouseover a cursor moves over an object

onmouseout a cursor moves off an object

onmouseup a user releases a mouse-button

onreset a user resets a form

onselect a user selects content on a page

onsubmit a user submits a form

onunload a user closes a page

22

Page 23: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Objekti HTML DOM-a

23

Represents a checkbox on an HTML form. For each instance of an

HTML <input type="checkbox"> tag on an HTML form, a

Checkbox object is created

Checkbox

Represents a push button on an HTML form. For each instance of an

HTML <input type="button"> tag on an HTML form, a Button

object is created

Button

Represents the body of the document (the HTML body)Body

Represents an HTML basefont elementBasefont

Represents an HTML base elementBase

Represents an area of an image-map. An image-map is an image

with clickable regions

Area

Represents an HTML applet element. The applet element is used to

place executable content on a page

Applet

Represents an HTML a element (a hyperlink)Anchor

DescriptionObject

Page 24: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Objekti HTML DOM-a

24Represents an HTML inline-frameIframe

A predefined object which can be accessed through the history property of

the Window object. This object consists of an array of URLs. These URLs

are all the URLs the user has visited within a browser window

History

Represents a hidden field on an HTML form. For each instance of an HTML

<input type="hidden"> tag on a form, a Hidden object is created

Hidden

Represents an HTML framesetFrameset

Represents an HTML frameFrame

Forms are used to prompt users for input. Represents an HTML form

element

Form

For each instance of an HTML <input type="file"> tag on a form, a

FileUpload object is created

FileUpload

Represents the state of an event, such as the element in which the event

occurred, the state of the keyboard keys, the location of the mouse, and

the state of the mouse buttons

Event

Used to access all elements in a pageDocument

Page 25: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

25

Represents a selection list on an HTML form. For each instance of an HTML

<select> tag on a form, a Select object is created

Select

Automatically created by the JavaScript runtime engine and it contains

information about the client's display screen

Screen

Represents a reset button on an HTML form. For each instance of an HTML

<input type="reset"> tag on a form, a Reset object is created

Reset

Represents radio buttons on an HTML form. For each instance of an HTML

<input type="radio"> tag on a form, a Radio object is created

Radio

Represents a password field on an HTML form. For each instance of an

HTML <input type="password"> tag on a form, a Password object is created

Password

Represents an option in a selection list on an HTML form. For each instance

of an HTML <option> tag in a selection list on a form, an Option object is

created

Option

Contains information about the client browserNavigator

Represents an HTML meta elementMeta

Contains information about the current URLLocation

Represents an HTML link element. The link element can only be used within

the <head> tag

Link

Represents an HTML img elementImage

Page 26: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

26

Corresponds to the browser window. A Window object is created automatically

with every instance of a <body> or <frameset> tag

Window

Represents an HTML textarea elementTextarea

Represents a text field on an HTML form. For each instance of an HTML

<input type="text"> tag on a form, a Text object is created

Text

Represents an HTML tr elementTableRow

Represents an HTML th elementTableHeader

Represents an HTML td elementTableData

Represents an HTML table elementTable

Represents a submit button on an HTML form. For each instance of an HTML

<input type="submit"> tag on a form, a Submit object is created

Submit

Represents an individual style statement. This object can be accessed from

the document or from the elements to which that style is applied

Style

Page 27: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora
Page 28: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora
Page 29: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JavaScript biblioteke Olakšavaju napredno JavaScript programiranje

Štede vrijeme

Pomoćne biblioteke

Često se zovu frameworci

Najpopularnije:

jQuery

Prototype

MooTools

Page 30: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery

jQuery je najpopularniji JS framework na Internetu

Koristi selektore slične css selektorima

Dodatni framework za korisničko sučelje

Plug-in ovi

Prihvaćaju ga sve velike kompanije (Google, Microsoft, Ibm, Netflix

Page 31: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery jQuery je JavaScript biblioteka

jQuery pojednostavljuje programiranje u Javascriptu

jQuery jednostavan za naučiti

31

Page 32: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery HTML - odabir elemenata

HTML - događaji i funkcije

HTML - manipulacija elementima

CSS - manipulacija

JavaScript - efekti i animacije

HTML DOM - šetnja stablom i modifikacije

AJAX

32

Page 33: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery – učitavanje biblioteke Sve u jednoj datoteci

jquery.js

<head><script type="text/javascript" src="jquery.js"></script></head>

http://docs.jquery.com/Downloading_jQuery

33

Page 34: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery – učitavanje biblioteke Alternativni načini učitavanja:

<head><script type="text/javascript" src=" http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js "></script></head>

<head><script type="text/javascript" src=" http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script></head>

<head><script type="text/javascript" src=" http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js"></script></head>

..... 34

Page 35: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery Vlastite jQuery skripte u eksternoj datoteci: <head>

<script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="my_jquery.js"></script></head>

Sukob kod imenovanja

(npr. jQuery i Prototype istovremeno) $ kao “shortcut” koriste i neke druge biblioteke

noConflict()

var $jq=Jquery.noConflict()

35

Page 36: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery sintaksa jQuery sintaksa je izrađena za:

Pronalazak HTML elemenata

Izvršavanje akcija nad tim elementima

$(query).action() $ - označava da je riječ o jQuery

(query) selektor za pronalazak HTML elemenata

jQuery action() koji se izvrše nad elementima

36

Page 37: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Primjeri sintakse

$(this).hide() – sakriva trenutni element

$("p").hide() – sakriva sve paragrafe

$("p.test").hide() – sakriva paragrafe klase "test"

$("#test").hide() – sakriva element sa id="test“

CSS selektor?

37

Page 38: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery selektor jQuery Element Selektori

jQuery Atribut Selektori

jQuery CSS Selectori

38

Page 39: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery Element Selektori CSS stil dohvaćanja elemenata:

$(“h1") dohvaća sve <h1> elemente

$(“h1.x") dohvaća sve <h1> elemente klase “x".

$(“h1#y") dohvaća <h1> element sa id=“y".

39

Page 40: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery Atribut Selektori XPath stil dohvaćanja elemenata sa atributima

$("[href]") dohvaća sve elemente sa href atributom

$("[href='#']") dohvaća sve elemente sa href vrijednosti "#"

$("[href!='#']") dohvaća sve elemente sa

href atributom vrijednosti <> "#"

$("[href$='.jpg']") dohvaća sve elemente sa href atributom koji sadrži ".jpg".

40

Page 41: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery CSS Selectori jQuery CSS selektori se mogu koristiti da se promijeni

CSS svojstvo HTML elemenata

$(“h1.x").css("background-color",“blue")

41

Page 42: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Dodatni primjeri $("ul li:first")

Prvi <li> element svakog <ul>

$("ul li:even")

parni <li> elementi

$("div#intro .head")

Svi elementi klase "head“ unutar <div> elementa čiji je id="intro"

42

Page 43: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Events i jQuery Događaji (events) su dobro podržani u jQuery-u

Ponoviti što su događaji (events)!

$("button").click(function() {..neki kod... } )

43

Page 44: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery Events

44

Page 45: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery Events

45

Page 46: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Efekti u jQuery Hide and Show

Toggle

Slide Functions - slideDown, slideUp, slideToggle

Fade Functions - fadeIn(), fadeOut(), fadeTo()

Vlastite animacije

46

Page 47: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Hide i Show$("#hide").click(function(){

$("p").hide()

})

$("#show").click(function(){

$("p").show()

})

Sintaksa:

$(selector).hide(speed,callback)

$(selector).show(speed,callback)

Callback – nakon izvršenja može se pozvati nova funkcija

47

Page 48: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Hide i Show

48

Page 49: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Toggle$(selector).toggle(speed,callback)

$("button").click(function(){

$("p").toggle()

})

49

Page 50: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Toggle

50

Page 51: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

slideDown, slideUp, slideToggle (selector).slideDown(speed,callback)

(selector).slideUp(speed,callback)

(selector).slideToggle(speed,callback)

51

Page 52: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

slideDown, slideUp, slideToggle

52

Page 53: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

fadeIn(), fadeOut(), fadeTo() (selector).fadeIn(speed,callback)

(selector).fadeOut(speed,callback)

(selector).fadeTo(speed,opacity,callback)

53

Page 54: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

fadeIn(), fadeOut(), fadeTo()

54

Page 55: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Vlastite animacije<script type="text/javascript">$(document).ready(function(){$("#start").click(function(){$("#box").animate({height:300},"slow")$("#box").animate({width:300},"slow")$("#box").animate({height:100},"slow")$("#box").animate({width:100},"slow")});});</script>

55

Page 56: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

56

Page 57: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

HTML i jQuery Mijenjanje HTML sadržaja

(selector).html(content)

Dodavanje HTML sadržaja

(selector).append(content)

(selector).prepend(content)

(selector).after(content)

(selector).before(content)

57

Page 58: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

CSS i jQuery (selector).css(name,value)

$("p").css("background-color","yellow")

(selector).css({properties})

$("p").css({"background-color":"yellow","font-size":"200%"})

(selector).css(name)

$(this).css("background-color")

58

Page 59: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

CSS i jQuery (selector).height(value)

$("#id100").height("200px")

(selector).width(value)

$("#id200").width("300px")

59

Page 60: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery

<ul>

<li style=“background:red;”>

<span>Changed</span>

First item

</li>

<li>

Second item

</li>

<li style=“background:red;”>

<span>Changed</span>

Third item

</li>

</ul>

<ul>

<li>

First item

</li>

<li>

Second item

</li>

<li>

Third item

</li>

</ul>

<ul>

<li>

<span>Changed</span>

First item

</li>

<li>

Second item

</li>

<li>

<span>Changed</span>

Third item

</li>

</ul>

$(“li:odd”).prepend(‘<span>Changed</span>’).css({background:“red”});

60

Page 61: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora
Page 62: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

AJAX

Asynchronous JavaScript and XML

Zašto asinkrono?

Zašto Javascript?

Zašto XML?

62

Page 63: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Ajax 2005

Primjeri

Google Suggest

Osvježavanje podataka meteo stanice

Modeliranje širenja šumskog požara

Page 64: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora
Page 65: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

65

Page 66: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora
Page 67: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Asinkrona komunikacija?

KLIJENT

šalje httpRequest

čeka

čeka

čeka

čeka

prima httpResponse

Učitava podatke

Osvježava se stranica

SERVER

čeka

čeka

prima httpRequest

priprema httpResponse

šalje httpResponse

čeka

čeka

čeka

HTTP protokol: Klijent-server

Page 68: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Klasični pristup

68

Page 69: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

AJAX pristup

69

Page 70: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Asinkorna komunikacija Korisničke akcije koje bi u generirale HTTP request

pretvaraju se u Javascript pozive koje pozivaju AJAX engine

AJAX engine upravlja svim odgovorima sa servera

Potencijalni problemi

Javascript mora biti omogućen

“Back button” ne radi uvijek

Stranice nekad teško spremiti u “Bookmarks”

Page 71: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JavaScript

Dohvat dijela stranice (DOM model, getElementById)

Slanje http zahtjeva

Dohvat http odgovora

Obrada http odgovora

Izmjena (update) dijela stranice

Page 72: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

XML Format podataka

Strukturirani podaci

XMLHttpRequest

Page 73: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

73

Pokretanje HTTP zahtjeva

1. Kreiranje i konfiguracija

XMLHttpRequest objekta

2. Pokretanje zahtjeva

3. Obrada odgovora

Page 74: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Kreiranje XMLHttpRequest objekta

Mozilla:

IE:

var request = new XMLHttpRequest();

var request = new

ActiveXObject("Microsoft.XMLHTTP");

74

Page 75: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Konfiguracija XMLHttpRequest objekta

request.open("method","URL",false)

request.setRequestHeader("header","value")

• Method je GET, POST, itd.

• URL postoje sigurnosna ograničenja

• false hoće li se zahtjev izvršiti asinkrono

75

Page 76: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Pokretanje zahtjeva

request.send(content)

• content je poslan u POST zahtjevu

• content se koristi samo sa POST

• content može biti prazan ili "null”

76

Page 77: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Konfiguracija XMLHttpRequest objekta URL

Datoteka na serveru

Može biti bilo koja vrsta datoteke (xml, txt, asp, php, …)

Asinkrono izvođenje – true ili false

Da bi se XMLHttpRequest ponašao kao AJAX potrebno postaviti u true

Ukoliko je Async=false

Javascript se ne izvodi dok se ne dobije odgovor servera

Ne pise se onreadystatechange funkcija, već samo .send()

Page 78: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Async = false Async = false

xmlhttp.open("GET","ajax_info.txt",false);xmlhttp.send();document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Async = true xmlhttp.onreadystatechange=function()

{if (xmlhttp.readyState==4 && xmlhttp.status==200){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;}}

xmlhttp.open("GET","ajax_info.txt",true);xmlhttp.send();

Page 79: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

XMLHttpRequest onreadystatechange

xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){// Neki kod}

}

0 – Zahtjev nije inicijaliziran

1 – Zahtjev je postavljen

2 – Zahtjev je poslan

3 – Zahtjev se obrađuje

4 – Zahtjev je izvršen79

Page 80: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

GET i POST GET:

xmlhttp.open("GET","demo_get2.asp?fname=Henry&lname=Ford",true);xmlhttp.send();

POST: xmlhttp.open("POST","ajax_test.asp",true);

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send("fname=Henry&lname=Ford");

Page 81: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

Obrada odgovora

request.responseText

request.responseXML

request.status request.statusText

request.getAllResponseHeaders()

request.getResponseHeader("header")81

Page 82: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

responseText Ukoliko odgovor sa servera nije XML

Odgovor je u biti string

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Page 83: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

responseXML Dohvaćeni odgovor može se parsirati kao XML dokument

xmlDoc=xmlhttp.responseXML;var txt="";x=xmlDoc.getElementsByTagName("ARTIST");for (i=0;i<x.length;i++){txt=txt + x[i].childNodes[0].nodeValue + "<br />";}

document.getElementById("myDiv").innerHTML=txt;

Page 84: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

AJAX – auto sugestija

84

Page 85: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

AJAX – auto sugestija

85

Page 86: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

AJAX – auto sugestija Ako u input polju ima nešto zapisano:

Definira URL (filename) koji će se poslati serveru

Dodaje parametar (q) tom URL-u sa sadržajem input polja

Dodaje random broj da bi se spriječio caching

Kreira XMLHTTP objekt te se pokreće funkcija stateChanged kad se dogodi promjena

Otvara XMLHTTP objekt sa danim URL-om

Šalje HTTP zahtjev na server

86

Page 87: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

AJAX – auto sugestija

87

Serverski dio pogledati na:

http://www.w3schools.com/ajax/ajax_aspphp.asp

Page 88: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

jQuery & AJAX

jQuery poziva higher level

.loadAJAX funkciju

88

Page 89: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JSON Počeci razvoja 2001. godine

U kombinaciji sa Javascriptom

Mime type “application/json”

Primjereniji od XML za prijenos preko mreže

Bliži programerskom pristupu shvaćanja strukture podataka

Brži od XML-a

DOM relativno spor

Za AJAX puno pristupačniji i brži

Page 90: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JSON U JSON-u postoji 6 tipova podataka:

1. Stringovi – “xyz” … “Pozdrav!”

2. Brojevi – 17 … -22.76425 … 8.54621e7

3. Boolean – true or false

4. Null – null

5. Objekti – { “propName”: value, … }

6. Nizovi – [ value, value, value… ]

Page 91: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JSON – kako izgleda{

“porukaID”: 243,

“poruka”: “Pozdrav!!!”,

“poslano”: “2010-05-26 12:21:17.271”,

“adrese”:

{ “ime”: “Jure”, “prezime”: “Ivić” },

“intLista”: [46, 482, -48, 31.234e7, 14, -6],

“posaljiZaglavlje”: true

}

Page 92: Javascript, DOM, DHTML · JavaScript je programski jezik više razine osmišljen da doda interaktivnost na web stranice. Objektno orijentirani jezik Untyped –tip podatka ne mora

JSON Koristiti JSON parser (Firefox ima ugrađeni parser)

Npr. Json2.js

http://www.json.org/json2.js

var oMyData = JSON.parse(sJSON);

Javascript je popularan

JSON je “prirodan” način prenošenja podataka u Javascript aplikacijama