Webtechnologien Teil 16: JavaScript
Transcription
Webtechnologien Teil 16: JavaScript
Webtechnologien Teil 16: JavaScript - Teil II Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 04.12.15 1 Überblick • Einige Objekte in JavaScript – – – – – String Number RegExp Array Date • Document Object Modell (DOM) • Cookies Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 2 Objekt String I (1) var s= "Hallo world!"; (2) var t= new String("Hallo world!"); ... (3) document.write(s.length); • • Das Objekt String wird implizit bei jeder Zeichenkette benutzt. Beide angegebenen Formen der Objekterzeugung sind gleichwertig. Das Objekt String hat nur ein Attribut: length. Es wird die Anzahl der Zeichen des Strings geliefert. Im Beispiel wird 12 ausgegeben. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 3 Objekt String II - Liste der Methoden (Auszug) Methode Erläuterung charAt(Position) Liefert das Zeichen an der Position concat(String) Fügt String hinten an indexOf(String) Sucht nach String und gibt dessen Position zurück slice(Pos1,Pos2) Extrahiert den String zwischen Pos1 und Pos2 split(Char) Trennt den String mit dem Trennzeichen Char in einzelne Bestandteile auf, die in ein Array geschrieben werden können toLowerCase() Liefert den nach Kleinbuchstaben konvertierten String toUpperCase() Liefert den nach Großbuchstaben konvertierten String Wie in Java sind Strings keine Arrays von Zeichen… Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 4 Objekt String III • • Wenn Strings per document.write() ausgegeben werden, können vorher HTML-Tags in den String integriert werden, die dann die Ausgabe formatieren. Das Einfügen von Tags bzw. von Layout-Attributen ist auch per JSRoutinen möglich, z.B. var out1= "Hallo".bold(); var out2= "World".italics().blink(); document.write(out1+out2); Der Output sieht zwar fürchterlich aus, demonstriert aber die Arbeitsweise. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 5 Objekt String IV – Tagfunktionen (Auszug) Methode Erläuterung big() Etwas größerer Font bold() Fett fontcolor(Color) Schriftfarbe fontsize(Points) Schriftgröße italics() Kursiv small() Etwas kleinerer Font strike() Durchgestrichen sub() Index Unten sup() Index Oben Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 6 Objekt Number Eigenschaft Erläuterung Number.MAX_VALUE Größte zulässige Zahl Number.MIN_VALUE Kleinste zulässige Zahl Number.NaN Wert nach Konvertierungsproblemen Number.NEGATIVE_INFINITY Wert, falls Zahl kleiner als MIN_VALUE wurde Number.POSTIVE_INFINITY Wert, falls Zahl größer als MAX_VALUE wurde Infinity Wert, falls Zahl zu groß oder zu klein wurde Methode Erläuterung toString(Radix) Konvertierung in String entsprechend Basis Radix valueOf() Konvertierung in Zahl toExponential(Ziffern) Konvertierung in String mit Runden auf Ziffern hinterm Komma toFixed(Ziffern) dasselbe nur für Nicht-Exponentialschreibweise Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 7 Objekt RegExp I (1) var reg1= /bla*bla/; (2) var reg2= new RegExp("bla*bla"); • • • • Das Objekt RegExp kapselt Routinen zum Durchsuchen von Objekten des Typs String anhand regulärer Ausdrücke. Beide Beispiele sind äquivalent. "bla*bla" steht hierbei für den regulären Ausdruck. Ein regulärer Ausdruck (1) wird durch "/" geklammert. Das Escape-Zeichen des regulären Ausdrucks ist der Backslash "\". Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 8 Objekt RegExp II (1) var reg1= /bla*bla/i; (2) var reg2= new RegExp("bla*bla","i"); • • • Direkt hinter dem 2. Slash bzw. als 2. Parameter von RegExp sind folgende Zeichen erlaubt: – g: Muster mehrfach hintereinander innerhalb einer Zeile anwenden – i: keine Berücksichtigung der Groß-/Kleinschreibung Beide angegebenen Beispiele sind äquivalent. Die Angabe beider Buchstaben: gi ist möglich, dann gelten beide Variationen. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 9 Objekt RegExp III – Meta-Zeichen (Auszug) Zeichen Bedeutung Beispiel Passt auf \b Wortgrenze /\bThe/ /er\b/ /\bnun\b/ " Theater" "Ärger " " nun " \B Nicht-Wortgrenze \d Ziffer /\d\d\d/ "987" \D Nicht-Ziffer /\D\D/ "Dr" \s Leerzeichen /E\smail/ "E mail" \S Nicht-Leerzeichen /E\Smail/ "E-mail" \w Buchstaben, Ziffer, _ /10\w/ "10m" \W Kein Buchstaben, Ziffer, _ /10\W/ "10%" Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 10 Objekt RegExp IV – Meta-Zeichen (Auszug) Zeichen Bedeutung Beispiel passt auf . Jedes Zeichen außer CR/LF /../ "g7" [...] Irgendein Zeichen /Ma[jy]er/ "Majer" [^...] Keines der Zeichen * Kein, ein- oder mehrmals /\d*/ ? Kein oder einmal /\d?/ "", "9" + Ein oder mehrmals /\d+/ "9", "371" {n} Genau n-mal /\d{3}/ "371" {n,} n oder mehrmals /\d{3,}/ "37168" {n,m} Mindestens n-, max. m-mal /\d{3,4}/ "3716" ^ Beginn der Zeichenkette /^Sie/ "Sie haben..." $ Ende der Zeichenkette /nnen$/ "...gewonnen" Webtechnologien - WS 2015/16 - Teil 16/JavaScript II "", "9", "371" 11 Beispiel var Text= "Langer Text mit viel drinn......"; var Muster= /drinn/; if(Muster.test(Text)) { ... Muster gefunden ... } ... var Position= Text.search(Muster); ... var Neu= Text.replace(Muster, "drumm herum"); document.write(Text); /* gibt nun "Langer Text mit viel drumm herum......" aus */ Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 12 Methoden des Objektes String Methode von String Erläuterung match(/RegExpr/) Durchsucht die Zeichenkette und liefert alle Treffer als Array zurück replace(/RegExpr/, String) Durchsucht die Zeichenkette und ersetzt alle Treffer mit String search(/RegExpr/) Durchsucht die Zeichenkette und liefert gefundene Position als 0-basierter Index oder -1 Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 13 Objekt Array I Beispiel: var Suess= new Array("Schokolade","Bonbon","Eis","Lutscher"); Methode Erläuterung Beispiele join(string) Verbindet alle Elemente zu einer Zeichenkette, wobei string der Trenner zwischen den Elementen ist Suess.join("+") ergibt "Schokolade+Bonbon+Eis+Lutscher" concat(Elem,..) Die angegebenen Elemente werden hinten an das Feld angefügt. Suess.concat("Tomate"); sort(Function) Das Feld wird durch Anwendung der Funktion Function sortiert - fehlt diese, wird die ASCII-Reihenfolge benutzt. Die Elemente werden paarweise verglichen durch Aufruf der Funktion Function. Diese hat zwei Parameter und liefert 0: keine Änderung oder >0: erster Wert vor dem zweiten. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 14 Objekt Array II Methode Erläuterung Beispiele push(Elem,..) Das Array wird durch Anhängen hinten verlängert. Suess.push("Marmelade"); pop() Das letzte Element des Feldes wird gelöscht und als Wert geliefert. IchEsse= Suess.pop(); shift() Das erste Element wird entfernt und als Wert geliefert, wobei alle anderen Element um 1 vorrücken DuIsst= Suess.shift(); unshift(Elem,..) Die angegebenen Elemente werden vorne in das Feld eingeschoben, wobei alle anderen Elemente entsprechend nach hinten geschoben werden. Suess.unshift("Tomate"); Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 15 Objekt Date I (1) (2) (3) (4) • • var var var var now1= now2= now3= now4= new new new new Date(); Date("Mon Tag, Jahr Stunden:Min:Sec"); Date(Jahr, Monat, Tag); Date(Jahr, Monat, Tag, Stunden, Min, Sec); Das Date-Objekt beinhaltet alle Routinen zur Behandlung von Zeitpunkten. Ein Date-Objekt kann auf vier Arten erzeugt werden: – (1) Es wird die aktuelle Zeit benutzt. – (2) Es wird ein String in dem angegebenen Format ausgewertet. – (3) Die drei Parameter werden übernommen, die Uhrzeitwerte werden auf 0 gesetzt. – (4) Alle 6 Parameter werden übernommen. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 16 Objekt Date II (1) var now1= new Date("December 24, 2000 18:00:00"); (2) var now2= new Date(2000, 12, 24); (3) var now3= new Date(2000, 12, 24, 18, 0, 0); • Bei der Behandlung von Zeiten müssen die Probleme der Weltzeit (Zeitverschiebung) und Sommerzeit beachtet werden. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 17 Objekt Date III Methode Wertebereich Erläuterung getDate() 1..31 Nummer des Tages getDay() 1..7 Nummer des Wochentags getHours() 0..23 Stunde getMinutes() 0..59 Minute getMonth() 0..11 (!) Nummer des Monats getSeconds() 0..59 Sekunden getTime() 0... ms seit 1.1.1970 getTimezoneOffset() -720..+720 Differenz Lokalzeit und GMT getYear() 00..99 Jahr (Jahr-2000-Probleme) Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 18 Objekt Date IV Methode Erläuterung setDate(Tag) Setzen der Tagnummer setHours(Stunde) Setzen der Stunde setMinutes(Minute) Setzen der Minuten setMonth(Monat) Setzen des Monats (0..11!) setSeconds(Sekunden) Setzen der Sekunden setTime(Millisec) Setzen der ms seit 1.1.1970 setYear(Jahr) Setzen des Jahres Es gelten die entsprechenden Bemerkungen zu den get-Funktionen für die Wertebereiche. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 19 Objekt Date V var var var var now= Stu= Min= Sek= new Date(); now.getHours(); now.getMinutes(); now.getSeconds(); var Zeit= ""+((Stu>12)? Stu-12: Stu); // umtypen in String Zeit+= ((Min<10)?":0" : ":")+Min; // vorlaufende 0 Zeit+= ((Sec<10)?":0" : ":")+Sec; // vorlaufende 0 Zeit+= (Stu>=12)? "PM" : "AM"; document.write(Zeit); • • Das Code-Stück zeigt den schrittweisen Zusammenbau einer Zeitangabe nach amerikanischer Art. Wenn noch Felder mit den Strings der Monate und Wochentage benutzt werden, kann das Datum in eine Langform gebracht werden. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 20 Document Object Model (DOM) I • Das Document Object Modell (DOM) beschreibt die hierarchische Struktur der im Browser durch das Dokument definierten Objekte. Das DOM beschreibt damit die interne hierarchische Repräsentation des Dokuments als Baum von Knoten. • DOM ist also die API für den Zugriff auf die Bestandteile des Dokuments. • Entsprechend der Hierarchie wird mit der Punktnotation ein Objekt bzw. Methode bzw. Attribut adressiert, z. B. window.document.write(). • Wenn es eindeutig ist, können die vorderen Teile der Punktnotation weggelassen werden, z. B. document.write(). • In die API sind auch Objekte von JavaScript integriert, z.B. Date. Siehe http://www.w3.org/DOM/ http://de.selfhtml.org/dhtml/modelle/dom.htm Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 21 Document Object Model (DOM) II W3C hat die meisten Elemente des Legacy DOMs standardisiert und noch weitere zusätzlich festgelegt. • Das gesamte Dokument wird in Knoten zerlegt, auch Kommentare. • Das Verändern eines Knotens führt unmittelbar zur geänderten Darstellung. Dies ist die Basis der AJAX-Technologie. • Beginnend mit der Wurzel wird ein Element nach folgendem Verfahren adressiert: wurzel.element.element.element wobei element für den Namen oder die Art eines Knoten steht. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 22 W3C DOM II – Suchen anhand von Merkmalen document.getElementById("String") Zugriff auf ein Element/Tag mit Attribut id=String. document.getElementsByTagName("String") Zugriff auf Elemente, wobei diese in einem Array geliefert werden, z.B. Zugriff auf den 3. Absatz: document.getElementsByTagName("p")[2] document.getElementsByName("String") Zugriff auf Elemente mit Attribut name=String, wobei diese in einem Array geliefert werden Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 23 Übersicht über einige DOM-Objekte Objekt Erläuterungen anchor Referenz auf selbst definierte URL applet Referenz auf ein Applet document Webseite selbst form Referenz auf ein Formular frame Referenz auf ein Frame history Referenz auf die Surfgeschichte image Referenz auf eine Grafik link Referenz auf benutzte URL location Referenz auf Adresszeile des Browsers navigator Referenz auf benutzten Browser plugin Referenz auf geladene Plugins screen Referenz auf Informationen des verwendeten Bildschirms window Statusinformation des Browserfensters Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 24 Übersicht über DOM-Felder Arrays Beschreibung anchors[] Zugriff auf alle Anker (benannte Positionen) applets[] Zugriff auf alle applets u.a. Steuerung forms[] Zugriff auf alle Formulare frames[] Zugriff auf alle Frames images[] Zugriff auf alle Bilder links[] Zugriff auf alle Hyperlinks (URL) options[] Im Formular selektierte Optionen plugins[] Zugriff auf alle geladenen Plugins Die obigen Arrays stehen immer zur Verfügung und können durch das Laufen durch den Baum direkt angesprochen werden. Das Laufen wird durch die Punkt-Notation erreicht. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 25 Objekt Window I • • • • Eines der wichtigsten Objekte ist das Window-Objekt. Über dieses Objekt läuft die gesamte globale Steuerung. Die Eigenschaften/Methoden stehen überall zur Verfügung. In vielen Fällen braucht "window." nicht angegeben zu werden, z. B. reicht "document.write()" statt "window.document.write()" Eigenschaft Erläuterung defaultStatus Voreingestellter Text der Statuszeile opener Referenz auf das Fenster, das das aktuelle geöffnet hat self Referenz auf sich selbst status Aktueller Text der Statuszeile Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 26 Objekt Window II Methode Erläuterung alert(Text) Öffnet eine Alarmbox mit dem Text blur(Window) Setzt das angegebene Fenster in den Hintergrund close(Window) Schließt das angegebene Fenster confirm(Text) Öffnet ein kleines Formular mit dem Text und den Knöpfen OK und Abbruch focus(Window) Setzt das angegebene Fenster in den Vordergrund open(URL,Name,Optionen) Öffnet ein neues Fenster prompt(Text, Default) Öffnet ein Fenster zur Eingabe mit vorbelegten Text Default clearTimeout(TimeID) Löscht den Timer setTimeout(Func,MS) Setzt den Timer und liefert TimeID zurück. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 27 Objekt Window - Beispiele I window.status= 'Text in der Statuszeile'; var fen= open("neu.html","Faenster","height=200,width=300"); fen.focus(); • • • • Das erste Beispiel zeigt die Veränderung der Statuszeile, das zweite, wie ein neues Fenster aufgemacht wird. Hier braucht "window." nicht vorangestellt zu werden. Die Optionen innerhalb des Strings müssen direkt ohne ein Blank hintereinander definiert werden. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 28 Optionen für window.open() Option Werte Erläuterung height Pixel Höhe width Pixel Breite directories yes/no Anzeige der Lesezeichenleiste location yes/no Anzeige der URL-Zeile menubar yes/no Anzeige der Standard-Menue-Leiste resizable yes/no Veränderung der Fenstergröße scrollbars yes/no Anzeige der Scrollbars status yes/no Anzeige der Statuszeile toolbar yes/no Anzeige der Werkzeugleiste top Pixel Y-Position left Pixel X-Position Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 29 Objekt Window - Beispiele II ... <a href='javascript:self.close();'>Fenster zu</a> ... • • Hier wird eine JavaScript-Routine statt einer URL benutzt. Dies dient nur als instruktives Beispiel – möglichst vermeiden, mit onClick geht es auch. Nach diesem Schema sind Knöpfe zum Vorwärts- und Zurückgehen in der History etc. möglich. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 30 Objekt Document I • Das Objekt Document betrifft die durch HTML bearbeitete "Fläche", d.h. den <body>-Teil. • Das Verändern führt eventuell zu Schwierigkeiten, da der Browser bei längeren oder komplizierten Operationen nicht korrekt den Bildschirm aktualisiert. Methode Erläuterung document.write(Text) Fügt den Text in das Dokument ein, das anschließend interpretiert wird document.writeln(Text) Wie write() nur dass ein CR angefügt wird document.open(Docu) Löscht das Dokument und eröffnet zum Schreiben document.close(Docu) Beendet das Schreiben, kein window.close() document.clear(Docu) Löscht den Text im Dokument Das betrifft nur den Client, Dokumente auf dem Server bleiben unberührt. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 31 document.write() document.write("Hallo"," Ihr ",cnt," Fische!","<br>"); • Dies ist eine der wichtigsten Funktionen, die auch mit einer Liste von Parametern aufgerufen werden kann, wie oben im Beispiel. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 32 Objekt Document II Eigenschaft Erläuterung document.bgColor Hintergrundfarbe document.fgColor Textfarbe (nur lesen) document.linkColor Linkfarbe nicht besucht document.alinkColor Linkfarbe während des Ladens document.vlinkColor Linkfarbe besucht document.lastModified Änderungsdatum des Dokuments (nur lesen) document.location href des Dokuments (nur lesen) document.referrer URL des Dokuments, das auf das aktuelle verwiesen hat document.title Der Text des <title>-Elements document.cookie String mit den Cookie-Informationen Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 33 Objekt Document III • Über verschiedene Felder kann auf weitere Elemente der Seite zugegriffen werden. • Anzahl der Elemente kann mit length erfahren werden. Array-Name Erläuterung window.document.images[] Graphiken in der Reihenfolgen der img-Tags window.document.anchors[] Anker in der Definitionsreihenfolge window.document.links[] Links in der Definitionsreihenfolge window.document.forms[] Formulare in der Definitionsreihenfolge Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 34 Objekt Document IV - Stylesheets (1)document.styleSheets[index] (2)document.styleSheets[0].disabled= true; (3)document.styleSheets[0].cssRules[0] (4)document.styleSheets[0].rules[0] (5)document.styleSheets[0].cssRules[0].style.fontsize="10pt" • • • • • Mit (1) ist ein Zugriff auf Stylesheets möglich. (2) zeigt wie ein bestimmtes Stylesheet ein-/ausgeschaltet werden kann. Zugriff auf die 1. Regel: (3) beim Firefox, (4) beim Explorer In (5) wird beim Firefox die Fontgröße der 1. Regel auf 10pt gesetzt. Die einzelnen Regeln lassen sich in einer Schleife traversieren. Die obigen Beispiele zeigen nur, wie auf die Unterbäume zugegriffen werden kann. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 35 Objekt Document V - Stylesheets var elem= document.getElementById(Name); (1)elem.style.display= ....; (2)elem.style.visibility= ....; (3)elem.style.width= "70%"; (4)elem.style.height= "100px"; (5)elem.cssFloat= ....; (6)elem.styleFloat= ....; • • • //"none" oder "block" //"visible" oder "hidden" //"left" oder "right" //"left" oder "right" Dies sind Beispiele für den Umgang mit Layers (div mit ID). Beispiel (1) bis (4) zeigen, wie Eigenschaften gesetzt werden können. In (5) und (6) wird das Umfließen mit Text gesteuert (5) für den Firefox (6) für den Explorer Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 36 Objekt Image • Zugriff auf die Bilder erfolgt mit: – document.images[...] – document.Bildname Eigenschaft Erläuterung border Dicke des Rahmens in Pixel complete Boole'scher Wert über den Ladestatus heigth, width Höhe und Breite in Pixel hspace, vspace Horizontaler/Vertikaler Abstand zum nächsten Element in Pixel lowsrc URL der alternativen Grafikdatei name Name des Image-Objekts src URL der Graphik Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 37 Formulare I • Die Formulare werden in der Definitionsreihenfolge von 0 beginnend durchgezählt. • Zugriff auf die Formulare: document.forms[0]... • Zugriff auf die Elemente der Formulare: document.forms[Nr].elements[0]... • Die Elemente werden analog den Formularen in der Definitionsreihenfolge von 0 beginnend durchgezählt. • Attribute der Elements – value: Eingegebener/augenblicklicher Wert – checked: Boole'scher Wert, ob angekreuzt – options[]: Array mit den Optionen der Elemente • Attribute der Options – value: Augenblicklicher Wert – selected: Boole'scher Wert, ob ausgewählt ist Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 38 Formulare II • Damit liegt folgende Hierarchie vor: – forms[] elements[] • options[] • Entsprechend dieser Hierarchie müssen Punkte in den Namen angegeben werden, z. B. document.forms[2].elements[0].options[1].value • Da das alles etwas undurchsichtig werden kann, können in dem "Pfad" die Abschnitte – forms[Nr] – elements[Nr] durch Namen ersetzt werden, d.h. das obige Bespiel kann zu: document.Bank.BLZ.options[1].value werden, sofern in der Formular-Definiton der verkürzende Name mit dem nameAttribut definiert wurde. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 39 Formulare III • Eigenschaft Erläuterung action URL des CGI-Script o.ä. encoding MIME-Kodierung der zu sendenden Daten length Anzahl der Formulare name Name des Formulars method Methode des HTTP-Request: "POST", "GET" target Zielfenster der action-Antwort Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 40 Ereignisse im <body>-Tag • Event = Ereignis = Etwas, was der Browser festgestellt hat und das durch JavaScript behandelt werden kann • Events und ihre Behandlung stellen die Basis für Dynamik der dargestellten Seite dar. function sagHallo() { ... } function sagTschuess() { ... } ... <body onLoad="sagHallo();" onUnLoad="sagTschuess();"> Event-Handler Aktivierung onLoad Wenn das Dokument geladen ist onUnload Wenn das Dokument geschlossen oder verlassen wird Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 41 Ereignisse bei Graphik, Links, Anker I Das Anwendungsgebiet liegt hierbei in der dynamischen Änderung des Dokuments, z. B. in Abhängigkeit von Eingaben. ...und natürlich in netten Spielereien. Event-Handler <img> <a> Aktivierung onAbort Ja Nein bei Abbruch des Ladens onClick Nein Ja bei Klick auf den Link onError Ja Nein wenn die Grafik nicht geladen werden konnte onMouseout Ja Ja wenn die Maus das Objekt verlässt onMouseover Ja Ja wenn die Maus über dem Objekt ist Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 42 Ereignisse bei Graphik, Links, Anker II var Pictures= new Array; Pictures[0]= new Image; Pictures[0].src= URL1; Pictures[1]= new Image; Pictures[1].src= URL2; function Pict(nr) { document.images[0].src=Pictures[nr].src; } <a href=URL onMouseover="Pict(0);" onMouseout="Pict(1);"> <img src=URL1 ...></a> • • Wenn die Maus sich oberhalb des einen Links befindet, wird die Graphik ausgetauscht - wird dann die Maus wegbewegt, wird die alte Graphik wieder angezeigt. Dies ist ein Rollover-Effekt mit zwei Graphiken – nette Spielerei. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 43 Ereignisse in Formularen Event input type/Form Aktivierung onBlur select text textarea Wenn Benutzer das Feld verlässt, d.h. wenn das Feld den Fokus verliert onKeyUp Wenn ein Zeichen eingegeben wurde onChange select text textarea Wenn das Feld den Fokus verliert und eine Änderung gemacht wurde onClick button checkbox radio reset submit Wenn Benutzer das Feld anklickt onFocus select text textarea Wenn Benutzer das Feld aktiviert, d.h. wenn das Feld den Fokus erhält onReset form Bei Drücken des RESET-Knopfes onSelect text textarea Wenn Benutzer eine Textstelle markiert onSubmit form Bei Drücken des SUBMIT-Knopfes Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 44 Beispiel I – Kleiner Umrechner function Rechner() { var Money= document.EURO.DM.value; var Total= Math.round((Money/1.95583)*100)/100; document.EURO.EUR.value= Total; } ... <form name="EURO"> <input name="DM" size=... type="text">DM <p> <input type="button" value="Los!" onClick="Rechner();"><p> <input name="EUR" size=... type="text">EUR </form> • • Der triviale EUR-Umrechner basiert auf der Klickbehandlung im 2. input-Tag. "document.forms[0]" ist durch "document.EURO" ersetzt. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 45 Beispiel II: Besuchsdauer start= new Date(); startzeit= start.getTime(); function Stoppuhr() { jetzt= new Date(); zeit= (jetzt.getTime()-startzeit)/1000; document.Hier.Dauer.value= Math.round(zeit); setTimeout('Stoppuhr()', 1000); } ... <body onLoad="Stoppuhr()"> <form name="Hier"> Du bist schon <input name="Dauer" size="10"> Sekunden hier. </form> </body> • • Alle 1000ms wird die Funktion Stoppuhr() aufgerufen, die die Zeitdifferenz zum ersten Aufruf berechnet und ausgibt. Direkt nach dem Laden wird Stoppuhr() sofort aufgerufen. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 46 Beispiel III <input type="text" style="backgroundcolor:'#FFFF99'" onFocus="this.style.backgroundColor='#FF0000'" onBlur= "this.style.backgroundColor='#FFFF99'"> .... </input> • • Das Eingabefeld soll seine Farbe ändern, wenn der Fokus darauf fällt. #FFFF99 ist ein Gelbton, während #FF0000 ein kräftiges Rot ist. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 47 Heraus klappende Layers (Navigation) I <style type="text/css"> body { padding-left:20px; } #leftBord { left:0px; top:0px; position: absolute; width: 20px; height: 100px; } #navigat { left:0px; top:0px; position: absolute; width: 200px; height: 100px; background-color:yellow; visibility:hidden; } </style> Lorem ipsum dolor …… tempor invidunt ut …… voluptua.<p> <div id="leftBord" onMouseOver="show()" onMouseOut="hide()"> </div> <div id="navigat" onMouseOver="show()" onMouseOut="hide()">Text2 </div> Lorem ipsum …… invidunt ut …… voluptua.<p> Es werden drei Bereiche definiert: (1) Der Hauptbereich, etwas nach rechts eingerückt, (2) eine schmale linke Leiste und (3) ein versteckter Layer mit z.B. Navigation-URLs. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 48 Heraus klappende Layers (Navigation) II function show () { document.getElementById("navigat").style.visibility= 'visible'; } function hide() { document.getElementById("navigat").style.visibility= 'hidden'; } Dies sind die fehlenden Routinen im Mozilla-Stil. In der Realität muss eine (komplexe) Browserweiche programmiert werden, die entsprechend dem Browsertyp eine globale Variable setzt, die wiederum in diesen Funktionen abgefragt werden muss... Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 49 Heraus klappende Layers (Navigation) III Vorher Nachher Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 50 Cookies I document.cookie= "Name=Wert; Attribut=Wert; ..."; ... var exp= new Date(2007,4,1); document.cookie= "Name=Gustav; expires="+exp.toGMTString(); document.cookie= "Beruf=Koenig; expires="+exp.toGMTString(); • • • Das Erzeugen von Cookies erfolgt durch das Setzen des Attributs cookie vom Objekt document. In Form einer Schlüsselwortliste werden alle Bestandteile definiert. Die Cookie-Werte dürfen weder Blanks noch Sonderzeichen enthalten; daher müssen in diesen Fällen die Strings vorher mit escape() und unescape() konvertiert werden. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 51 Cookies II Domain und Path geben die Auswahlbedingungen von Cookies, in dem Sinne an, dass nur die Cookies an den Server gesendet werden, deren domain+path mit dem Server kompatibel ist. Dies sind die Attribute der Cookies: Attribut Erläuterung domain Name der Domain oder in Teil davon, z. B. domain=lola.de path Pfad zur Datei, z.B. path=/ expires Verfallsdatum secure Cookie wird nur bei SSL übertragen Dieses Attribut wird ohne = benutzt, d.h. wie ein Schlüsselwort. Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 52 Nach dieser Anstrengung etwas Entspannung... Webtechnologien - WS 2015/16 - Teil 16/JavaScript II 53