(Microsoft PowerPoint - 07-JavaScript.ppt [Re\236im kompatibility])

Transkript

(Microsoft PowerPoint - 07-JavaScript.ppt [Re\236im kompatibility])
JavaScript a DOM
PIA 2005/2006
Téma 7
Copyright © 2005 Přemysl Brada, Západočeská univerzita
Pojmy
• DOM
– reprezentace HTML, XML dokumentů
– API pro přístup k ní
• JavaScript
Click!
– skriptovací jazyk
interpretovaný na straně klienta
• DHTML
– HTML + JavaScript + CSS
2
Souvislosti
postup výkladu
používá
JavaScript
DOM
reprezentuje
Výrobci
prohlížečů
DHTML
«actor»
W3C
HTML,
CSS
3
Document object model
• API pro přístup k reprezentaci HTML, XML dokumentů
– definuje logickou strukturu dokumentu
» strom, případně les
– vlastnosti a metody pro upravování obsahu
• Části
– jádro – základní typy
– HTML, XML – specifické vlastnosti jazyků
– stylesheety, events, traversal, … – na 2. a vyšší úrovni
http://www.w3.org/DOM/
5
DOM – jádro
– DOMImplementation
• informace o dostupnosti vlastností DOMu
– Node
• základní strom uzlů
• reference na dokument, rodiče, potomky, sourozence
• manipulace s potomky
– Dokument: Node
• *ML reprezentace elementu
• jméno tagu, manipulace s atributy
• normalizování textového obsahu
– Text: CharacterData
• reprezentuje koncové uzly, např. textový obsah
– Comment: CharacterData
8
HTML DOM
• Cíle
– specializace DOMu pro funkčnost spojenou s HTML
– zpětná kompatibilita s „Level 0“
– poskytování vhodných operací (skriptování)
• Vlastnosti
– předpokládá Transitive nebo Frameset HTML 4.0
– neumí
• stylesheety, modifikace stylů
• jmény událostí a jejich obsluha
10
HTML DOM rozhraní
• „Zkratková“ rozhraní a vlastnosti/metody
–
–
–
–
HTMLDocument → title; images; write(text);
HTMLMetaElement → name; content; httpEquiv
HTMLFormElement → action; submit()
HTMLUListElement → type
– běžné vlastnosti: id; title; className; …
• Návaznost na skriptovací jazyky
– ECMA script, Java
11
JavaScript
JavaScript
• Skriptovací jazyk interpretovaný na straně klienta
– použití: dynamické HTML
» kontrola dat na straně klienta, přepisování stránek
• Vývoj
– počátky: Netscape v NS2
• následováno MS (JScript), NS
• standardní stabilní jádro: ECMAScript (ECMA 262)
– aktuální verze:
• ECMA-262 Edition 4 = vývoj, Edition 3 = stabilní
• JavaScript 1.7 = stabilní Firefox 2, 1.8 = vývoj
14
Základní charakteristiky
• Syntaxe na základě C/Java
• Netypový jazyk
– implicitní deklarace proměnných
– základní typy: number (float), boolean, string
– funkce
• Objektově orientováno
– třídy => objekty s vlastnostmi
• Bezpečnost
– čtení pouze z počátku, žádný zápis souborů a událostí
15
Propojení JavaScriptu a HTML
• Možnosti uložení skriptů
– <script language=“javascript“
type=“text/javascript“>
code
</script>
» pozor: ne-SGML text
– re-use kódu:
<script ... src=“URL.js“></script>
– kdekoli, nejlépe HEAD element
• Element <noscript>
17
Propojení JavaScriptu a HTML (2)
• Spouštění scriptů událostmi
– klient (GUI) generuje události
• image:Abort, buttons:Click, document:Load
– dokument je pojmenovává jako události
• onAbort, onClick, onLoad
a aktivuje přidruženou obsluhu (script)
• onEvent=“code; return true“
» return true umožní elementu normální práci
• Spouštění přes URL
– běžně používané „javascript“ URI schema
• <a href=“javascript: … “ >
18
Browser Object Model (BOM)
• Jak se mapuje DHTML na koncept DOMu
– žádná formální definice objektového modelu
– instance, ne rozhraní/třídy, hierarchie agregace
– přizpůsobený pro specifické klienty (Netscape, Microsoft)
• DHTML vs. DOM
– DHTML: obsluha událostí => “živé“ dokumenty
– DOM: jednoduché změny ve struktuře dokumentu
19
BOM
• Klíčové objekty
navigace
20
Přístup k prvkům dokumentu
• Odkazování přes jména
– element se jménem: <img name=”Obr1” … >
– odkazován jak prvek pole: document.images[“Obr1”]
– nebo jako pojmenovaný atribut rodiče: document.Obr1
• Přes pole objektů, nejvíce v document:
• anchors[], applets[], forms[], images[]
• all[] v MSIE
• Použití W3C DOM metod
» nutné pro XHTML
– elementy s atributem id
– metoda getElementById() na Node
21
JavaScript DOM objekty
• Window
– rodič všech, reprezentuje klienta
– potomci: Frame, Location, History, document
– vlastnosti: location, parent; open(), prompt()
• document
– viditelný dokument
– potomci: Link, Image, Anchor, Applet, Form
– vlastnosti: title, linkColor; open(), write()
• Form
– jeden formulář uvnitř dokumentu
– potomci: Textarea, FileUpload, Password, Radio,
Checkbox, Button, Select, Submit, Reset
• Style
– dynamické CSS pomocí JavaScriptu
– vlastnosti: backgroundColor, borderStyle, textIndent,
paddings(), …
22
Příklady
Formuláře
• DHTML pro
– zvýšenou použitelnost formuláře
– menší zatížení serveru
• Skripty
...
<style type="text/css">
.hotkey { text-decoration: underline; }
.required { font-weight: bold; }
</style>
<script language="JavaScript"><!-function setStatus(msg) { window.status = msg; }
pokračování …
31
Formuláře (2)
function formCheck(form)
{
var result = false;
var name = form.lastname.value;
if (name.match("^[A-Za-z]*$") {
alert("You must fill in your last name.");
form.lastname.focus();
}
else {
form.valid = "true";
form.submit();
result = true;
}
return result;
}
//-->
</script>
</head>
32
Formuláře (3)
• Stránka
<body onload="window.document.aform.firstname.focus()">
<form name="aform" action="..."
onsubmit="return(formCheck(document.aform));">
First name:
<input name="firstname" title="Your first name(s)"
onfocus="setStatus('Enter your first name')" onblur="setStatus('')">
<span class="required"><span class="hotkey">L</span>ast name:
<input name="lastname" accesskey="l"
title="Your last name, without spaces. Required"
onfocus="setStatus('Enter your last name')"
onblur="setStatus('')"></span>
<input type="hidden" name="valid" value="false">
<input type="submit" name="submit“ value="Submit">
</form>
</body>
33
Formuláře: Rendering
• Výsledek
34
AJAX & AHAH
• Async JavaScript and XML
Async HTTP and HTML
– XmlHttpRequest objekt
– překreslení části stránky
přes DOM
• Coolness vs. Back
<select name="vyber" id="vyber"
onchange="vyberClanek();">
<option value="0">-Vyber-</option>
<option value="clanek1.htm">Článek 1
</option>
<option value="clanek2.htm">Článek 2
</option>
</select>
<div id="text"> </div>
function vyberClanek() {
var url = document.
getElementById("vyber").value;
if (url != 0) {
httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, true);
httpRequest.onreadystatechange=
function() { processRequest(); } ;
httpRequest.send(null);
}
}
function processRequest() {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
var kam =
document.getElementById("text");
kam.innerHTML =
httpRequest.responseText;
}
else
alert("Chyba nacitani stanky");
}
}
Příklad vypůjčen z http://citron.blueboard.cz/clanek-239-ajax-navod-pro-zacatecniky.html
35

Podobné dokumenty

DSpace 5 - Mirage 2

DSpace 5 - Mirage 2 ❏ Vždy aktuální knihovny frameworky ❏ Jiná myšlenka změn ❏ Úpravy stejné jako v Mirage1 ❏ Někdy problém s nasazením ❏ Mobilní verze

Více

Příloha

Příloha aby se jim složitá situace lépe zvládala - na základě zpětné vazby rodičů jsme zjistili, že dětem chybí volnočasové aktivity, proto pravidelně organizujeme terapeutické kroužky pod vedením zkušenéh...

Více

Tvorba webových aplikací pomocí AJAX

Tvorba webových aplikací pomocí AJAX V praxi se používá při tvorbě www stránek kombinace různých technologií. Většinou se jedná o:

Více

Ovlivnění vlastností výstupního PDF

Ovlivnění vlastností výstupního PDF „Encryption support has been removed from pdfTeX starting with v1.10a, since it made the code too hard to maintain.“ úryvek z homepage pdfTeX

Více

Přehled formulářových tagů Method

Přehled formulářových tagů  Method terminologii tohoto serveru jmenuje "Blueform". Aby to fungovalo, musí ze v nastavení Blueformu zadat e-mail, na který se má formulář odesílat. Zároveň se mohou nastavit barvy, to není podstatné. P...

Více

input

input Ostatní – typy hidden, button, image, file • hidden – skryté pole s předem nastavenou hodnotou – slouží k předávání hodnot proměnných v php • button – obecné tlačítko, neslouží pro odeslání formulá...

Více

Kódová klávesnice Alarm_keypad

Kódová klávesnice Alarm_keypad vstoupíte do místnosti, zaregistruje Vás pohybové čidlo, začne se odpočítávat čas příchodu, po zadání platného kódu se odpočet vypne, jinak se vyvolá poplach na nadřazeném alarmu nebo se spustí při...

Více

Sborník příspěvků

Sborník příspěvků charakteristiky události přímo v textu stránky. U data začátku a konce akce ještě pomocí atributu title doplníme datum a čas ve strojově čitelné podobě. Elementy a atributy přidané pro zachycení vš...

Více

1. test z PJC Jméno studenta: Pocet bodu

1. test z PJC Jméno studenta: Pocet bodu předposledním atd.) a vrátí ukazatel na začátek tohoto řetězce. Korektně ošetřete případ, kdy zadaný řetězec je prázdný. char *strrev(char *str); ---------------------------------------------------...

Více