Εκτέλεση GreekScript
- Προηγούμενη Σελίδα Ιστορία του GreekScript
- Επόμενη Σελίδα Γλώσσα Προγραμματισμού ECMAScript
The core ECMAScript of JavaScript describes the syntax and basic objects of the language;
DOM describes the methods and interfaces for handling web content;
BOM describes the methods and interfaces for interacting with the browser.
ECMAScript, DOM, and BOM
Although ECMAScript is an important standard, it is not the only part of JavaScript, of course, nor is it the only part that has been standardized. In fact, a complete JavaScript implementation consists of the following 3 different parts:

ECMAScript
ECMAScript is not bound to any specific browser, in fact, it does not mention any methods for user input/output (this is different from languages like C, which require external libraries to complete such tasks). So, what is ECMAScript? The description of ECMA-262 standard (Section 2) is as follows:
“To provide core script programming capabilities for different host environments, ECMAScript is defined separately from any specific host environment... ...”
Οι περιηγητές είναι ένας περιβάλλον υποδοχής για το ECMAScript, αλλά δεν είναι το μοναδικό. Στην πραγματικότητα, υπάρχουν αμέτρητοι άλλοι περιβάλλοντες (π.χ. το Nombas ScriptEase, καθώς και το ActionScript που χρησιμοποιείται από τη Macromedia στο Flash και Director MX) που μπορούν να υποστηρίξουν υλοποιήσεις ECMAScript. Τότε τι ορίζει το ECMAScript εκτός από τους περιηγητές;
Συνοπτικά, το ECMAScript περιγράφει τα εξής:
- Γραμματική
- Τύποι
- Αντικείμενα
- Λέξεις-κλειδιά
- Κλειδιά
- Συνδυασμοί
- Αντικείμενα
Το ECMAScript είναι απλώς μια περιγραφή που ορίζει όλες τις ιδιότητες, τα μεθόδους και τα αντικείμενα της γλώσσας script. Άλλες γλώσσες μπορούν να υλοποιήσουν το ECMAScript ως βάση λειτουργιών, όπως το JavaScript:

Κάθε περιηγητής έχει τη δική του υλοποίηση του διεπαφής ECMAScript, η οποία στη συνέχεια επεκτείνεται, περιλαμβάνει το DOM και το BOM (θα εξεταστούν στα επόμενα κεφάλαια). Φυσικά υπάρχουν και άλλες γλώσσες που υλοποιούν το ECMAScript ως βάση λειτουργιών, όπως το Windows Scripting Host (WSH), το ActionScript του Macromedia στο Flash και Director MX, και το Nombas ScriptEase.
1. Εκδόσεις ECMAScript
Το ECMAScript είναι διανεμημένο σε διάφορες εκδόσεις και ορίζεται σε ένα πρότυπο που ονομάζεται ECMA-262. όπως και άλλα πρότυπα, το ECMA-262 θα επεξεργάζεται και θα ενημερώνεται. Όταν υπάρχει σημαντική ενημέρωση, εκδίδεται μια νέα έκδοση του προτύπου. Η πιο πρόσφατη έκδοση του ECMA-262 είναι η 5.1, η οποία κυκλοφόρησε τον Ιούνιο του 2011.
Η πρώτη έκδοση του ECMA-262 είναι στην ουσία ίδια με το Netscape JavaScript 1.1, με την αφαίρεση όλου του κώδικα που σχετίζεται με τους περιηγητές, καθώς και με μικρές προσαρμογές. Πρώτα απ' όλα, το ECMA-262 απαιτεί υποστήριξη για το πρότυπο Unicode (για υποστήριξη πολλαπλών γλωσσών). Δεύτερον, απαιτεί ανεξάρτητους από την πλατφόρμα αντικείμενους (το Netscape JavaScript 1.1 στην πραγματικότητα έχει διαφορετικές υλοποιήσεις αντικειμένων, όπως το αντικείμενο Date, το οποίο εξαρτάται από την πλατφόρμα). Αυτό είναι το κύριο λόγο για τον οποίο το JavaScript 1.1 και 1.2 δεν είναι σύμφωνοι με το πρότυπο ECMA-262 της πρώτης έκδοσης.
Η δεύτερη έκδοση της ECMA-262 περιέχει κυρίως εедакτικές αναθεωρήσεις. Αυτή η αναθεώρηση του προτύπου είναι για να διασφαλιστεί η σφαιρική σύμφωνηση με το ISO/IEC-16262, χωρίς να προστίθενται, να τροποποιούνται ή να διαγράφονται περιεχόμενα. Η ECMAScript συνήθως δεν τηρεί τη δεύτερη έκδοση.
Η έκδοση της ECMA-262 στην τρίτη έκδοση είναι η πρώτη πραγματική αναθεώρηση του προτύπου. Παρέχει αναθεώρηση για την επεξεργασία αλφαβήτων, ορισμό σφαλμάτων και βελτιώσεις στην ανακάλυψη αριθμών. Επιπλέον, προσθέτει υποστήριξη για ρυθμοθέτηση, νέες οδηγίες ελέγχου, διαχείριση εξαιρέσεων try...catch και μικρές αλλαγές για την διεθνή προσαρμογή του προτύπου. Συνολικά, σηματοδοτεί την ECMAScript ως μια πραγματική γλώσσα προγραμματισμού.
2. Τι είναι η συμβατότητα ECMAScript
Στο ECMA-262, η συμβατότητα ECMAScript έχει σαφή ορισμό. Μια γλώσσα σκιών πρέπει να ικανοποιεί τα παρακάτω τέσσερα βασικά принципια:
- Οι υλοποιήσεις που συμμορφώνονται πρέπει να υποστηρίζουν όλους τους
- Οι υλοποιήσεις που συμμορφώνονται πρέπει να υποστηρίζουν το πρότυπο χαρακτήρων Unicode (UCS)
- Οι υλοποιήσεις που συμμορφώνονται μπορούν να προσθέτουν
- Οι υλοποιήσεις που συμμορφώνονται μπορούν να υποστηρίζουν την
Όλες οι υλοποιήσεις ECMAScript πρέπει να συμμορφώνονται με το παραπάνω πρότυπο.
3. Υποστήριξη ECMAScript στα web browsers
Η έκδοση Netscape Navigator 3.0 που περιέχει το JavaScript 1.1 κυκλοφόρησε το 1996. Στη συνέχεια, η规범 του JavaScript 1.1 κατατέθηκε ως πρόταση για νέο πρότυπο στην EMCA. Με την επαναστατική δημοτικότητα του JavaScript, η Netscape έγινε ιδιαίτερα χαρούμενη και ξεκίνησε την ανάπτυξη της έκδοσης 1.2. Ωστόσο, υπάρχει ένα πρόβλημα, η ECMA δεν αποδέχτηκε την πρόταση της Netscape. Κοντά στην κυκλοφορία του Netscape Navigator 3.0, η Microsoft κυκλοφόρησε το IE 3.0. Αυτή η έκδοση περιείχε το JScript 1.0 (το όνομα της δικής της υλοποίησης του JavaScript της Microsoft), το οποίο είχε προγραμματιστεί να είναι σύγκριτο με το JavaScript 1.1. Ωστόσο, λόγω ατελή τεκμηρίωσης και μερικών μη κατάλληλων επαναλαμβανόμενων χαρακτηριστικών, το JScript 1.0 δεν ήταν ούτε κοντά στο επίπεδο του JavaScript 1.1.
Πριν από την ολοκλήρωση της έκδοσης 1 της ECMA-262, η κυκλοφορία του Netscape Navigator 4.0 με το JavaScript 1.2 ήταν το 1997. Στην αρχή του ίδιου έτους, το πρότυπο ECMA-262 αποδεχτήθηκε και τυποποιήθηκε. Επομένως, το JavaScript 1.2 δεν είναι συμβατό με την πρώτη έκδοση του ECMAScript, αν και το ECMAScript θα έπρεπε να βασίζεται στο JavaScript 1.1.
Η επόμενη στάση για το JScript ήταν η εισαγωγή του JScript 3.0 στο IE 4.0 (η έκδοση 2.0 κυκλοφόρησε με το IIS 3.0, αλλά δεν περιελήφθη στους περιηγητές). Η Microsoft προώθησε το JScript 3.0 ως την πρώτη πραγματικά συμβατή γλώσσα脚本 με τα πρότυπα της ECMA. Τότε, η ECMA-262 δεν είχε τελικά ολοκληρωθεί, οπότε το JScript 3.0 αντιμετώπισε την ίδια τύχη με το JavaScript 1.2 - δεν κατάφερε να ταιριάζει με το τελικό πρότυπο ECMAScript.
Η Netscape επιλέγοντας να αναβαθμίσει την υλοποίηση του JavaScript της στο Netscape Navigator 4.06. Το JavaScript 1.3 έφερε την Netscape να είναι πλήρως συμβατή με την έκδοση 1 του ECMAScript. Η Netscape προσέθεσε υποστήριξη για το πρότυπο Unicode, και όλοι οι αντικείμενα διατήρησαν τις νέες λειτουργίες που εισήχθησαν στο JavaScript 1.2, ενώ επίσης έγιναν πλατφόρμα ανεξάρτητα.
Όταν η Netscape δημοσίευσε τον κώδικα πηγής της ως έργο Mozilla, ο προγραμματισμός ήταν να ενσωματωθεί το JavaScript 1.4 στο Netscape Navigator 5.0. Ωστόσο, μια ακραία απόφαση - να αναδιαμορφώσει από την αρχή τον κώδικα της Netscape, κατέστρεψε αυτή τη δουλειά. Το JavaScript 1.4 κυκλοφόρησε απλώς ως γλώσσα脚本 για τον διακομιστή Netscape Enterprise, και δεν συμπεριλήφθηκε ποτέ στους περιηγητές.
Σήμερα, όλοι οι κύριοι περιηγητές ιστούς ακολουθούν την έκδοση 3 της ECMA-262.
下面的表格列出了大部分流行的 Web 浏览器中的 ECMAScript 支持:
Πρόγραμμα περιήγησης | Συμβατότητα DOM |
---|---|
Netscape Navigator 2.0 | - |
Netscape Navigator 3.0 | - |
Netscape Navigator 4.0 - 4.05 | - |
Netscape Navigator 4.06 - 4.79 | Edition 1 |
Netscape 6.0+ (Mozilla 0.6.0+) | Edition 3 |
Internet Explorer 3.0 | - |
Internet Explorer 4.0 | - |
Internet Explorer 5.0 | Edition 1 |
Internet Explorer 5.5+ | Edition 3 |
Opera 6.0 - 7.1 | Edition 2 |
Opera 7.2+ | Edition 3 |
Safari 1.0+/Konqueror ~ 2.0+ | Edition 3 |
DOM
DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:
Sample Page hello world!
这段代码可以用 DOM 绘制成一个节点层次图:

DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。
1. 为什么 DOM 必不可少
自从 IE 4.0 和 Netscape Navigator 4.0 开始支持不同形态的动态 HTML(DHTML),开发者首次能够在不重载网页的情况下修改它的外观和内容。这是 Web 技术的一大飞跃,不过也带来了巨大的问题。Netscape 和微软各自开发自己的 DHTML,从而结束了 Web 开发者只编写一个 HTML 页面就可以在所有浏览器中访问的时期。
业界决定必须要做点什么以保持 Web 的跨平台特性,他们担心如果放任 Netscape 和微软公司这样做,Web 必将分化为两个独立的部分,每一部分只适用于特定的浏览器。因此,负责指定 Web 通信标准的团体 W3C(World Wide Web Consortium)就开始制定 DOM。
2. DOM 的各个 level
Το DOM Level 1 εισήχθη από το W3C τον Οκτώβριο του 1998. Συνίσταται από δύο μοジュλ, το DOM Core και το DOM HTML. Το πρώτο παρέχει μια δομή εγγράφου βασισμένη στο XML για την πρόσβαση και την επεξεργασία οποιουδήποτε τμήματος του εγγράφου; Το δεύτερο προσθέτει αντικείμενα και μεθόδους ειδικά για το HTML, επεκτείνοντας έτσι το DOM Core.
Σημειώστε ότι το DOM δεν ανήκει αποκλειστικά στον JavaScript, στην πραγματικότητα πολλές άλλες γλώσσες το έχουν υλοποιήσει. Ωστόσο, ο DOM στις 웹 περιηγητές έχει υλοποιηθεί με ECMAScript και είναι πλέον ένα σημαντικό μέρος της γλώσσας JavaScript.
Το DOM Level 1 είναι ένας στόχος, δηλαδή η επίτευξη της δομής του κειμένου, ενώ ο στόχος του DOM Level 2 είναι πολύ ευρύτερος. Η επέκταση του αρχικού DOM προσθέτει υποστήριξη για γεγονότα ποντικιού και διεπαφής χρήστη (το DHTML υποστηρίζει πλούσια αυτές τις διεπαφές), διαστήματα, περιήγηση (παράλληλα εκτελούμενα μεθόδους του DOM κειμένου) και υποστήριξη για CSS (κατατακτήριες λίστες στυλ) μέσω διεπαφών αντικειμένων. Το αρχικό DOM Core που εισήχθη στο Level 1 προστέθηκε επίσης υποστήριξη για ονόματα χώρου XML.
Το DOM Level 2 εισήγαγε αρκετούς νέους μοジュλ DOM για την επεξεργασία νέων τύπων διεπαφών:
- Προβολές DOM - Περιγραφή των διεπαφών για την παρακολούθηση των διαφόρων προβολών του κειμένου (δηλαδή του κειμένου πριν και μετά την παραμόρφωση με CSS)
- Δραστηριότητες DOM - Περιγραφή των διεπαφών για τα γεγονότα
- Στυλ DOM - Περιγραφή των διεπαφών για την επεξεργασία των στυλ βασισμένων στο CSS
- Προσβασμός και Διάρκεια DOM - Περιγραφή των διεπαφών για την περιήγηση και την επεξεργασία του δέντρου του κειμένου
Το DOM Level 3 εισήγαγε τρόπους για τη φόρτωση και τη διατήρηση των κειμένων με έναν ενιαίο τρόπο (περιλαμβάνεται στο νέο μοジュλ DOM Load and Save) και τρόπους για τη��τικοποίηση των κειμένων (DOM Validation), επεκτείνοντας περαιτέρω το DOM. Στο Level 3, το DOM Core επεκτάθηκε για να υποστηρίξει όλες τις χαρακτηριστικές του XML 1.0, συμπεριλαμβανομένων του XML Infoset, του XPath και του XML Base.
Στο μάθημα του DOM, μπορεί να συναντήσετε ανθρώπους που αναφέρονται στο DOM Level 0. Σημειώστε ότι δεν υπάρχει πρότυπο DOM Level 0, είναι απλώς ένα ιστορικό σημείο αναφοράς του DOM (το DOM Level 0 αναφέρεται στην υποστήριξη του αρχικού DHTML στα IE 4.0 και Netscape Navigator 4.0)
3. Άλλα DOM
Εκτός από το DOM Core και το DOM HTML, υπάρχουν και άλλες γλώσσες που έχουν εκδώσει τα δικά τους πρότυπα DOM. Αυτές οι γλώσσες είναι βασισμένες στο XML, και κάθε DOM προσθέτει μοναδικές μεθόδους και διεπαφές στην αντίστοιχη γλώσσα:
- Γλώσσα βελτιστοποιημένης κλίμακας δισδιάστατων γραφημάτων (SVG) 1.0
- Γλώσσα σημειώσεων αριθμητικών (MathML) 1.0
- Γλώσσα ενσωμάτωσης同步 multimedia (SMIL)
Σημειώσεις:Αν θέλετε να μάθετε περισσότερα για σχετικό περιεχόμενο, παρακαλώ επισκεφθείτε το CodeW3C Εκμάθηση SMIL και Εκμάθηση SVG.
Επιπλέον, άλλες γλώσσες έχουν αναπτύξει τις δικές τους υλοποιήσεις DOM, όπως η γλώσσα χρήστη XML του Mozilla (XUL). Ωστόσο, μόνο οι γλώσσες που αναφέρονται παραπάνω είναι οι προτεινόμενες προδιαγραφές του W3C.
Υποστήριξη DOM στα προγράμματα περιήγησης
Το DOM ήταν ένα πρότυπο πριν από την υλοποίησή του από τους περιηγητές του Web. Η πρώτη προσπάθεια του IE για το DOM ήταν στην έκδοση 5.0, αλλά στην πραγματικότητα δεν είχε πραγματική υποστήριξη DOM μέχρι την έκδοση 5.5, όπου το IE 5.5 επιτεύχθηκε το Level 1 του DOM. Από τότε, ο IE δεν έχει εισάγει νέες λειτουργίες DOM.
Ο Netscape προστέθηκε υποστήριξη DOM μέχρι την έκδοση 6 (Mozilla 0.6.0). Σήμερα, το Mozilla έχει την καλύτερη υποστήριξη DOM, επιτυγχάνοντας πλήρη Level 1, σχεδόν όλο το Level 2 και μέρος του Level 3 (οι στόχοι τουMozilla ανάπτυξης είναι να δημιουργήσουν έναν περιηγητή που είναι 100% συμβατό με τα πρότυπα, και η δουλειά τους έχει λάβει αποτέλεσμα).
Ο Opera προστέθηκε υποστήριξη DOM μέχρι την έκδοση 7.0, και το Safari επίσης επιτεύχθηκε η πλειοψηφία του Level 1. Απέχουν σχεδόν όλοι στο ίδιο επίπεδο με το IE 5.5, και σε μερικές περιπτώσεις, υπερβαίνουν το IE 5.5. Ωστόσο, σε ό,τι αφορά την υποστήριξη του DOM, όλες οι περιηγητές είναι πολύ πίσω από το Mozilla. Η παρακάτω τάβλη επισημαίνει την υποστήριξη του DOM από τους συνηθισμένους περιηγητές.
Πρόγραμμα περιήγησης | Συμβατότητα DOM |
---|---|
Netscape Navigator 1.0 - 4.x | - |
Netscape 6.0+ (Mozilla 0.6.0+) | Level 1, Level 2, Level 3 (προς μεγάλο βαθμό) |
IE 2.0 - 4.x | - |
IE 5.0 | Level 1 (το ελάχιστο) |
IE 5.5+ | Level 1 (προς μεγάλο βαθμό) |
Opera 1.0 - 6.0 | - |
Opera 7.0+ | Level 1 (καθώς και η πλειοψηφία του)、Level 2 (προς μεγάλο βαθμό) |
Safari 1.0+/Konqueror ~ 2.0+ | Level 1 |
Σημειώσεις:Εάν επιθυμείτε να μάθετε περισσότερα για την γνώση του DOM, παρακαλώ επισκεφθείτε το CodeW3C Εκμάθηση HTML DOM και Εκμάθηση XML DOM.
BOM
Το IE 3.0 και ο Netscape Navigator 3.0 παρέχουν μια λειτουργία - BOM (Browser Object Model), μέσω της οποίας μπορεί να γίνει πρόσβαση και λειτουργία στα παράθυρα του περιηγητή. Με τη χρήση του BOM, οι προγραμματιστές μπορούν να κινήσουν τα παράθυρα, να αλλάξουν το κείμενο του status bar και να εκτελέσουν άλλες ενέργειες που δεν σχετίζονται άμεσα με το περιεχόμενο της σελίδας. Ο BOM είναι μοναδικός και συχνά αμφιλεγόμενος γιατί είναι μέρος του JavaScript χωρίς καμία σχετική τυποποίηση.
Ο BOM επεξεργάζεται κυρίως τα παράθυρα και τα πλαίσια του περιηγητή, αλλά τα συγκεκριμένα επεκτάσματα JavaScript των περιηγητών θεωρούνται μέρος του BOM. Αυτά τα επεκτάσματα περιλαμβάνουν:
- Εμφάνιση νέου παραθύρου περιηγητή
- Μετακίνηση, κλείσιμο παραθύρου περιηγητή και ρύθμιση μεγέθους παραθύρου
- Όντοπος που παρέχει λεπτομερείς πληροφορίες για τον περιηγητή web
- Όντοπος που παρέχει λεπτομερείς πληροφορίες για την ανάλυση οθόνης του χρήστη
- Υποστήριξη cookie
- Το IE επεκτείνει το BOM, προσθέτοντας την κλάση ActiveXObject, μέσω της οποίας μπορεί να δημιουργηθούν αντικείμενα ActiveX με JavaScript
Επειδή δεν υπάρχει σχετικός τύπος BOM, κάθε περιηγητής έχει τη δική του υλοποίηση BOM. Υπάρχουν κάποιες πρακτικές τυποποιήσεις, όπως ένας αντικειμενοποιημένος αντικειμενοπόρος παράγοντας (window object) και ένας αντικειμενοποιημένος παράγοντας πλοήγησης (navigation object), αλλά κάθε περιηγητής μπορεί να καθορίσει τις δικές του ιδιότητες και μεθόδους για αυτά τα αντικείμενα ή άλλα αντικείμενα.
Δείτε επίσης:
- Προηγούμενη Σελίδα Ιστορία του GreekScript
- Επόμενη Σελίδα Γλώσσα Προγραμματισμού ECMAScript