Εργαστήριο #12. Βήμα 1 ο. Βήμα 2 ο. Βήμα 3 ο. Βήμα 4 ο.



Σχετικά έγγραφα
Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παιχνίδια σε Javascript

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Διαβάστε στο Παράρτημα Α.1 πώς θα γράψετε ένα πρόγραμμα PHP για την παροχή δεδομένων σε μορφή διαφορετική από την HTML.

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Javascript events. part 01

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

JAVASCRIPT EVENTS. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Οδηγίες Ακολουθήστε τα παρακάτω βήματα. Βεβαιωθείτε ότι το πρόγραμμά σας δουλεύει σωστά σε κάθε βήμα, πριν προχωρήσετε στο επόμενο.

Σημειώσεις D3. Προφανώς εάν προσθέταμε μία ή περισσότερες παραγράφους, πριν το script, θα άλλαζε το text στην πρώτη.

SVG Εργαστήριο 1. Εισαγωγή στα διανυσματικά γραφικά SVG

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Εργαστήριο #10 (Ε10) 1

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 η Εργασία

Γ3.3.Μ7 ΕΠΑΝΆΛΗΨΗ ΜΈΡΟΣ Α: ΈΝΝΟΙΕΣ ΤΙ ΕΊΝΑΙ Η VISUAL BASIC ΤΙ ΜΠΟΡΟΎΜΕ ΝΑ ΚΆΝΟΥΜΕ ΜΕ ΤΗ VISUAL BASIC ΑΝΤΙΚΕΊΜΕΝΑ: ΦΌΡΜΑ ΚΑΙ ΧΕΙΡΙΣΤΉΡΙΑ ΕΤΙΚΈΤΑ LABEL

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Το σκηνικό μας είναι πλέον έτοιμο για εισάγουμε τα υπόλοιπα αντικείμενα του έργου μας.

Περιεχόμενα. Πρόλογος...11

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Πρακτική εφαρμογή στην ειδικότητα: Λογισμικό για τη δημιουργία εργασίας εξαμήνου

1. Απαιτήσεις εργασίας

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

App Inventor 3ο Μάθημα (Ζάρια - επέκταση)

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Οδηγίες για το CABRI - GEOMETRY II Μωυσιάδης Πολυχρόνης - Δόρτσιος Κώστας

Δραστηριότητα 1. Προγραμματίζω τον υπολογιστή (10 ώρες).

Vodafone Business Connect

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ A.7.M21 Προγραμματίζοντας με το App Inventor Εισαγωγή

CSS Εργαστήριο 1. Εισαγωγή - Σύνταξη - Εφαρμογή στην HTML

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

<a href=" στο κείμενο</a>.

Δημοσίευση στο Διαδίκτυο

Εργαστήριο 2 - Άσκηση - Ανάλυση

ΜΕΡΟΣ ΠΡΩΤΟ: Θεωρητική Προσέγγιση...15

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Πρόσθεση + Αφαίρεση - Πολλαπλασιασμός * Διαίρεση / Πηλίκο \ Υπόλοιπο Δύναμη

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Τεχνολογίες Διαδικτύου (Εξασκηθείτε στην HTML)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Σενάριο 18: Ραβδογράμματα Πληθυσμού

DOM. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Δικτυακά Πολυμέσα Ι: 2 η Εργασία. Να δημιουργήσετε μια HTML σελίδα η οποία να περιέχει μία φόρμα που να μοιάζει με αυτή της παρακάτω εικόνας:

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα.

Ας μετονομάσουμε τη γάτα που εμφανίζεται μόλις ανοίγουμε το Scratch. Επιλέγουμε το εικονίδιο Μορφή1 που βρίσκεται στη λίστα αντικειμένων.

Οδηγίες Στο σημερινό εργαστήριο θα αρχίσετε να χρησιμοποιείτε βασικές οδηγίες μορφοποίησης της ιστοσελίδας σας (κάτι που έχουμε αποφύγει έως τώρα!).

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Εργαστήριο 8. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο

App Inventor 5ο Μάθημα (Κορώνα γράμματα - επέκταση)

Στην τεχνολογία των CSS, οι κανόνες στυλ (style

App Inventor. Εφαρμογή 7 η. Υπολογισμός Μέσου όρου μαθημάτων

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Create Sprite at Runtime

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

6 ο Εργαστήριο Σχεδιάζοντας σχήματα από σημεία κορυφών, Θόρυβος-Τυχαίοι Αριθμοί (συνέχεια)

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: PowerPoint Κεφάλαιο 2: Εκκίνηση του PowerPoint... 13

Βασικές Εντολές MicroWorlds Pro.

Εγχειρίδιο χρήσης Print2PDF σελ. 1 από 32

Εμφανίζονται 3 επιλογές με 3 εικονίδια, η «ζωγραφική», η «εισαγωγή» και η «κάμερα».

Εισαγωγή στην Αριθμητική Ανάλυση

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

XAMPP Apache MySQL PHP javascript xampp

<HTML> <HEAD> <TITLE> <BODY>

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

Ετικέτες HTML. <!-->: Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον

Μεθόδων Επίλυσης Προβλημάτων

Λίστες στο Scratch 2.0.

Δημιουργία και επεξεργασία διανυσματικών επιπέδων στο QGIS

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

1. Απαιτήσεις εργασίας

Εργαστήριο Γραφικών. Βοηθητικό Υλικό για την εκπόνηση των εργασιών Αφορά την 1 η Εργαστηριακή Άσκηση

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

Σχεδόν όλες οι ιστοσελίδες βασίζονται σε μεγάλο βαθμό σε πίνακες. Για να εισάγουμε έναν πίνακα επιλέγουμε από το μενού Insert->Table.

Ελέγξτε την ταινία σας

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΦΤΙΑΞΕ ΜΟΝΟΣ ΣΟΥ ΤΗ ΔΙΚΗ ΣΟΥ ΙΣΤΟΣΕΛΙΔΑ ΔΩΡΕΑΝ

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Ψευδοκώδικας. November 7, 2011

5 ο Εργαστήριο Δομές Επανάληψης (συνέχεια)

Transcript:

Εργαστήριο #12 Από τα προηγούμενα εργαστήρια: Το εργαστήριο αυτό είναι ανεξάρτητο από τα προηγούμενα επειδή όμως ασχολείται με τη γλώσσα JavaScript, βεβαιωθείτε ότι έχετε διαβάσει το εισαγωγικό Παράρτημα Γ του 11 ου εργαστηρίου. Οδηγίες Στο σημερινό εργαστήριο θα εξασκηθείτε στη χρήση της Javascript για τον προγραμματισμό στην πλευρά του browser του νέου στοιχείου HTML που ονομάζεται canvas. Το στοιχείο αυτό μας επιτρέπει να ζωγραφίσουμε σχήματα και άλλα στοιχεία δύο διαστάσεων (2D) μέσα στην ιστοσελίδα η προσθήκη σχημάτων γίνεται αποκλειστικά μέσω JavaScript. Ακολουθήστε τα παρακάτω βήματα: Βήμα 1 ο. Στο σημερινό εργαστήριο θα χρησιμοποιήσετε δύο αρχεία: ένα αρχείο html (κατάληξη.html) ένα αρχείο Javascript (με κατάληξη.js) Ξεκινήστε από ένα φρέσκο αρχείο HTML μπορείτε να χρησιμοποιήσετε το υπόδειγμα από το site του εργαστηρίου. Δημιουργήστε ένα νέο (κενό προς το παρόν) αρχείο κειμένου για τον κώδικα JavaScript. Διαβάστε στο Παράρτημα Α.1 πώς θα συνδέσετε τα δύο αρχεία, χρησιμοποιώντας το στοιχείο <script> της HTML. Βήμα 2 ο. Διαβάστε το Παράρτημα B.1 και εισάγετε ένα στοιχείο <canvas> με διαστάσεις 600x400 pixels στο <body> της ιστοσελίδας. Μην παραξενευτείτε που δεν βλέπετε τίποτα στον browser! Το στοιχείο <canvas> είναι αρχικά κενό και διαφανές! Βήμα 3 ο. Πριν αρχίσετε να αλληλεπιδράτε μέσω της JavaScript με τα στοιχεία HTML της ιστοσελίδας, θα πρέπει η ιστοσελίδα να έχει φορτωθεί πλήρως και να έχουν σχηματιστεί όλα τα στοιχεία της. Διαβάστε το Παράρτημα Α.2 και προσθέστε μια συνάρτηση για τον χειρισμό του γεγονότος onload της ιστοσελίδας. Βήμα 4 ο. Προσθέστε μια φόρμα για να μπορεί ο χρήστης να αλληλεπιδρά με την εφαρμογή σας. Το ζητούμενο είναι: (Ε12) 1

1. Να μπορεί ο χρήστης να επιλέξει από μια drop-down λίστα μεταξύ 3 σχημάτων (square, circle, text). 2. Να υπάρχει επίσης drop-down λίστα για επιλογή 3 χρωμάτων (red, green, blue). 3. Να υπάρχει ένα πλαίσιο για την εισαγωγή κειμένου, όταν ο χρήστης επιλέξει στη drop-down λίστα το text. 4. Τέλος, να υπάρχει ένα κουμπί για την εκτέλεση της επιλογής του χρήστη. Η φόρμα αυτή δεν θα στέλνει τίποτα στον web server (προορίζεται μόνο για αλληλεπίδραση με τον χρήστη) και πρέπει να τη χειριστείτε μέσω JavaScript. Διαβάστε το Παράρτημα Γ.1 για να δείτε πώς θα το επιτύχετε. Βήμα 5 ο. Προσθέστε στο αρχείο JavaScript μια συνάρτηση χειρισμού για το γεγονός onclick του κουμπιού της φόρμας. Προς το παρόν η συνάρτηση αυτή θα είναι κενή. Δείτε πώς θα το κάνετε στο Παράρτημα Γ.2. Βήμα 6 ο. Διαβάστε το Παράρτημα B.2 για να μάθετε πώς να σχεδιάζετε πάνω στην επιφάνεια του στοιχείου <canvas>. Βήμα 7 ο. Διαβάστε το Παράρτημα Γ.3 για να μάθετε πώς μπορείτε μέσω JavaScript να ανακτήσετε τις τιμές των στοιχείων εισόδου της φόρμας. Στη συνέχεια, προσθέστε κώδικα στη συνάρτηση χειρισμού onclick του κουμπιού, έτσι ώστε να σχεδιάζετε σε κάθε πάτημα ανάλογα με την επιλογή του χρήστη. Το μέγεθος και η θέση κάθε σχήματος θα υπολογίζονται δυναμικά με τη βοήθεια των εξής συναρτήσεων της JavaScript: Math.random() επιστρέφει έναν float ψευδοτυχαίο αριθμό r, 0 r<1 Math.floor(f) επιστρέφει τον μέγιστο ακέραιο αριθμό μικρότερο ή ίσο με τον float f Για να βρείτε έναν ψευδοτυχαίο ακέραιο αριθμό μεταξύ mink και maxk, γράφετε: Math.floor(Math.random()*(maxk-mink+1))+min Επίσης: για να βρείτε τα μέγιστα όρια, μπορείτε να χρησιμοποιήσετε τις ιδιότητες canvas.width και canvas.height του αντικειμένου Javascript που αντιπροσωπεύει το στοιχείο <canvas>. Βήμα 8 ο (προαιρετικό). Διαβάστε στο Παράρτημα B.3 πώς θα αποθηκεύσετε το περιεχόμενο του <canvas> σε ένα αρχείο. Προσθέστε ένα δεύτερο κουμπί στη φόρμα, καθώς και τον κατάλληλο κώδικα για να μπορεί ο χρήστης να αποθηκεύει το αποτέλεσμα της σχεδίασης. (Ε12) 2

Παράρτημα Α: JavaScript στον browser Στη συνέχεια δίνονται ορισμένα στοιχεία για τη σχέση της JavaScript με τον προγραμματισμό του browser. Το παρόν δεν είναι μια αναλυτική περιγραφή της Javascript για την ίδια τη γλώσσα θα δοθούν κατά περίπτωση ορισμένα στοιχεία, όπου αυτό είναι αναγκαίο. Αρκεί να γνωρίζετε ότι η σύνταξη είναι όμοια με της C (στις εντολές διακλάδωσης και επανάληψης, τα block εντολών, τα σχόλια, τον τερματισμό κάθε εντολής με το ;). Η σύνταξη στη χρήση των μεταβλητών είναι επίσης παρόμοια με της C. Υπάρχουν όμως σημαντικές διαφορές στον τύπο και τη δήλωση των μεταβλητών: Οι μεταβλητές μπορούν να αλλάζουν δυναμικά τύπο κατά τη διάρκεια της εκτέλεσης. Π.χ. ενώ μια μεταβλητή έχει περιεχόμενο integer, μπορεί αργότερα να αντιπροσωπεύει ένα string. Οι μεταβλητές δηλώνονται, χωρίς όμως προσδιορισμό τύπου, μέσω της λέξηςκλειδιού var. Μπορείτε να έχετε δήλωση και αρχικοποίηση μαζί: // δήλωση μεταβλητής η τιμή της είναι undefined var i; // δήλωση και αρχικοποίηση μεταβλητής var str = 'some text'; // μπορείτε να χρησιμοποιήσετε και " Η εμβέλεια των μεταβλητών είναι είτε σφαιρική (global), είτε τοπική σε συναρτήσεις (local). Δεν υπάρχει εμβέλεια block όπως στη C. Α.1. Πού θα προσθέσετε τον κώδικα JavaScript. Ο κώδικας Javascript μπορεί να προστεθεί: είτε μέσα στη δήλωση ενός στοιχείου HTML, ως κώδικας χειρισμού γεγονότος (βλ. 11 ο εργαστήριο) είτε μέσα στην ιστοσελίδα, μέσα σε ένα στοιχείο <script> είτε τέλος σε ξεχωριστό αρχείο, όπως και οι οδηγίες CSS, πάλι με τη χρήση του στοιχείου <script>. Ο τελευταίος τρόπος είναι και ο πλέον πρότυπος και θα τον ακολουθήσετε στο εργαστήριο. Μέσα στο στοιχείο <head> εισάγετε το εξής: <script src="code.js"></script> υποθέτοντας φυσικά ότι το αρχείο JavaScript ονομάζεται code.js και βρίσκεται στον ίδιο φάκελο με την ιστοσελίδα. Παρατηρήστε ότι υπάρχει και η ετικέτα τέλους </script>, παρόλο που δεν υπάρχει περιεχόμενο. (Ε12) 3

Α.2. Το αντικείμενο window μιας ιστοσελίδας. Από το 11 ο εργαστήριο γνωρίζετε ήδη το αντικείμενο document. Το αντικείμενο αυτό μας επιτρέπει την πρόσβαση στα στοιχεία HTML της ιστοσελίδας. Υπάρχει όμως ένα κεντρικό αντικείμενο, πατέρας όλων των αντικειμένων της ιστοσελίδας το περιβάλλον εκτέλεσης του κώδικα Javascript της ιστοσελίδας το οποίο ονομάζεται window (η ονομασία είναι κληρονομιά μιας εποχής όπου ένας browser είχε μόνο ένα παράθυρο και απεικόνιζε μία και μοναδική ιστοσελίδα). Το αντικείμενο window παρέχει το χώρο όπου ορίζονται όλα τα άλλα αντικείμενα της JavaScript για τη συγκεκριμένη ιστοσελίδα. Ένα από αυτά το γνωρίζετε ήδη: το document είναι παιδί του αντικειμένου window: window.document επειδή το window είναι το πρωταρχικό αντικείμενο, μπορούμε να περιγράψουμε τα παιδιά του χωρίς τη λέξη window. Έτσι λέμε απλά: document Ιδιότητες του αντικειμένου window που θα χρησιμοποιήσετε. window.onload Εάν οριστεί, παρέχει τη συνάρτηση που θα εκτελεστεί όταν η ιστοσελίδα και όλα τα αντικείμενα που περιέχει φορτωθούν πλήρως. Μόνο τότε έχει σχηματιστεί το δέντρο DOM των στοιχείων της ιστοσελίδας! Η συνάρτηση που θα δώσετε κάνει συνήθως τις αρχικοποιήσεις και συνδέει τα στοιχεία HTML με τον κώδικα χειρισμού των γεγονότων τους. Εισάγετε τη συνάρτηση αυτή στο αρχείο JavaScript ως εξής: window.onload = function() { }; //...ο κώδικας της συνάρτησης εδώ... Σας παραξενεύει ο παραπάνω κώδικας; Στην JavaScript οι συναρτήσεις είναι αντικείμενα, όπως οτιδήποτε άλλο. Έτσι, μπορείτε να δημιουργήσετε μια (ανώνυμη) συνάρτηση όπως στο παράδειγμα και να την αναθέσετε σε μια άλλη μεταβλητή. Φυσικά μπορείτε να ορίσετε μια συνάρτηση κατά τον παραδοσιακό τρόπο, όπως θα δείτε αργότερα. window.location Περιέχει πληροφορίες διεύθυνσης (URL) της ιστοσελίδας που είναι φορτωμένη στον browser: (Ε12) 4

// διαβάζοντας το αντικείμενο location παίρνετε το URL // της τρέχουσας ιστοσελίδας var currenturl = window.location; // γράφοντας στο location οδηγείτε τον browser σε νέα // ιστοσελίδα window.location = "http://di.ionio.gr "; (Ε12) 5

Παράρτημα Β: Το στοιχείο <canvas> της HTML5! Το νέο στοιχείο <canvas> επιτρέπει τη σχεδίαση γραφικών σε μια ιστοσελίδα. Η σχεδίαση αυτή γίνεται μέσω JavaScript, με τη χρήση μεθόδων που παρέχει το προγραμματιστικό αντικείμενο του στοιχείου <canvas>. Όταν εισάγετε γραφικά σε ένα στοιχείο <canvas>, τα πάντα μετατρέπονται σε pixels. Αυτό σημαίνει ότι δεν μπορείτε αργότερα να πείτε π.χ. εκείνη η γραμμή (που πρόσθεσα προηγουμένως) να αλλάξει χρώμα ή θέση. Απλούστατα, εκείνη η γραμμή δεν υπάρχει ως ξεχωριστό αντικείμενο! Αν θέλετε παρόμοια λειτουργικότητα, υπάρχει η αντίστοιχη τεχνολογία: ονομάζεται SVG αλλά δεν θα καλυφθεί στο εργαστήριο. Β.1. Πώς εισάγεται ένα στοιχείο <canvas> στην ιστοσελίδα. Ακολουθήστε το παράδειγμα, το οποίο εισάγει ένα στοιχείο <canvas> με διαστάσεις 320x200 pixels ζωγραφικής : <canvas id="testcanvas" width="320" height="200"> Canvas not supported... </canvas> Η ιδιότητα id δίνει ένα αναγνωριστικό όνομα στο στοιχείο <canvas>. Το όνομα αυτό θα χρησιμοποιηθεί αργότερα από την JavaScript. Το περιεχόμενο του στοιχείου θα φανεί μόνο στην περίπτωση που ο browser δεν υποστηρίζει το στοιχείο <canvas>! Β.2. Σχεδιάζοντας πάνω σε ένα στοιχείο <canvas>. Πριν κάνετε οτιδήποτε άλλο, πρέπει να προσπελάσετε το context σχεδίασης (δύο διαστάσεων 2D) του στοιχείου <canvas>: // επιλέγουμε το αντικείμενο του στοιχείου canvas var canvas = document.getelementbyid("testcanvas"); // ανάκτηση του context για σχεδίαση var context = canvas.getcontext("2d"); Στη συνέχεια, μπορείτε να σχεδιάσετε ένα γεμάτο (filled) ορθογώνιο παραλληλόγραμμο ως εξής: (Ε12) 6

// χρώμα γεμίσματος για τις επόμενες ενέργειες, // έστω ότι η μεταβλητή drawcolor περιέχει ένα string // με την πειργραφή του χρώματος, π.χ. red context.fillstyle = drawcolor; // δημιουργία παραλληλογράμμου, έστω ότι οι μεταβλητές // startx, starty, width, height περιέχουν ακέραιες τιμές context.fillrect(startx,starty,width,height); Η σχεδίαση ενός κύκλου είναι λίγο πιο περίπλοκη: πρέπει πρώτα να δημιουργήσετε ένα καμπύλο μονοπάτι (path) και στη συνέχεια να ζητήσετε την εμφάνισή του με γέμισμα: // χρώμα γεμίσματος για τις επόμενες ενέργειες context.fillstyle = drawcolor; // έναρξη path context.beginpath(); // προσθήκη στο path καμπύλης με κέντρο τα tx,ty (ακέραιοι), // ακτίνα radius (ακέραια τιμή), αρχική γωνία από τον άξονα x, // τελική γωνία (σε ακτίνια, στο παράδειγμα 2π). // Η τελευταία παράμετρος δείχνει αν η καμπύλη θα διαγραφεί // στη φορά των δεικτών του ρολογιού (false) ή // αντίστροφα (true). context.arc(tx,ty,radius,0,2*math.pi,true); // τέλος path context.closepath(); // εμφάνιση και γέμισμα path context.fill(); Τέλος, για να σχεδιάσετε κείμενο: // χρώμα γεμίσματος για τις επόμενες ενέργειες context.fillstyle = drawcolor; // font για σχεδίαση context.font = "bold 5em sans-serif"; // εμφάνιση κειμένου με γέμισμα, text είναι ένα string context.filltext(text,tx,ty); (Ε12) 7

Β.3. Αποθήκευση περιεχομένου στοιχείου <canvas>. Μπορείτε να μετατρέψετε σε εικόνα, να δείτε στον browser και στη συνέχεια να αποθηκεύσετε το περιεχόμενο του στοιχείου <canvas> ως εξής: // ανάκτηση canvas var canvas = document.getelementbyid("testcanvas"); // μετατροπή σε εικόνα (data URL) var imgdata = canvas.todataurl("image/png"); // μετάβαση στην εικόνα window.location = imgdata; (Ε12) 8

Παράρτημα Γ: Φόρμες HTML και JavaScript Στο σημερινό εργαστήριο θα δουλέψετε με μια φόρμα HTML μέσω της JavaScript και μόνο. Γ.1. Φόρμα HTML χωρίς αποστολή δεδομένων στον web-server. Εισάγετε τη φόρμα (form) και τα στοιχεία της (select, input κλπ) όπως γνωρίζετε από τα προηγούμενα εργαστήρια. Οι διαφορές είναι οι εξής: Δεν θα βάλετε τις ιδιότητες method και action στην ετικέτα του form (εφόσον δεν στέλνετε δεδομένα). Φροντίστε κάθε στοιχείο εισόδου (select, input κλπ) να έχει ένα ξεχωριστό όνομα, μέσω τις ιδιότητας id. Το id αυτό θα χρησιμοποιηθεί στην JavaScript για να επιλέξετε το συγκεκριμένο στοιχείο. Για να υλοποιήσετε το κουμπί της φόρμας, χρησιμοποιήστε το στοιχείο button, όπως στο εξής παράδειγμα: <input id="drawbutton" type="button" value="draw!"> Δηλώνοντας type="button" παίρνετε ένα κουμπί που δεν κάνει τίποτα (εκτός κι αν φροντίσετε διαφορετικά μέσω JavaScript!). Γ.2. Συναρτήσεις χειρισμού γεγονότων (event handlers). Κάθε στοιχείο εισόδου της φόρμας δημιουργεί διάφορα γεγονότα, ανάλογα με το αν ο χρήστης το επιλέγει, αλλάζει το περιεχόμενό του ή πιέζει το ποντίκι πάνω του. Στο σημερινό εργαστήριο θα χρειαστείτε το εξής: button στοιχείο εισόδου γεγονός (event) onclick όταν ο χρήστης πιέζει το κουμπί Θα πρέπει να εισάγετε μια συνάρτηση χειρισμού γεγονότος, π.χ.: function drawbuttonhandler() { // εδώ γράφετε τις λειτουργίες που θέλετε να γίνουν // μόλις συμβεί το γεγονός } και στη συνέχεια, μέσα στην αρχικοποίηση του window.onload να συνδέσετε το στοιχείο εισόδου που θέλετε με τη συνάρτηση αυτή, π.χ.: (Ε12) 9

window.onload = function() { // επιλέγουμε πρώτα το στοιχείο εισόδου, μέσω του id του var drawbutton = document.getelementbyid("drawbutton"); // στη συνέχεια συνδέουμε τη συνάρτηση χειρισμού στο γεγονός // onclick drawbutton.onclick = drawbuttonhandler; }; Στο προηγούμενο παράδειγμα, παρατηρήστε την πολύ σημαντική μέθοδο getelementbyid() του αντικειμένου document. Η μέθοδος αυτή δέχεται ως όρισμα το όνομα (id) ενός στοιχείου HTML και επιστρέφει το αντίστοιχο αντικείμενο της JavaScript που το αντιπροσωπεύει. Γ.3. Ανάκτηση τιμών από στοιχεία εισόδου φόρμας HTML. Ανάκτηση τιμής από στοιχείο select Παράδειγμα: // ανάκτηση αντικειμένου Javascript του στοιχείου var drawcolorselect = document.getelementbyid("drawcolor"); // ανάκτηση του αριθμού (index) της τρέχουσας επιλογής var sel = drawcolorselect.selectedindex // ανάκτηση της τιμής της τρέχουσας επιλογής var drawcolor = drawcolorselect[sel].value; Ανάκτηση τιμής από πλαίσιο κειμένου Παράδειγμα: // ανάκτηση αντικειμένου Javascript του στοιχείου var drawtextbox = document.getelementbyid("drawtext"); // ανάκτηση του τρέχοντος κειμένου var text = drawtextbox.value; (Ε12) 10