Implementierung von JavaScript
- Vorherige Seite Geschichte von JavaScript
- Nächste Seite Syntax von ECMAScript
Das kernige ECMAScript von JavaScript beschreibt die Syntax und grundlegenden Objekte dieser Sprache;
DOM beschreibt die Methoden und Schnittstellen zur Verarbeitung von Webinhalten;
BOM beschreibt die Methoden und Schnittstellen zur Interaktion mit dem Browser.
ECMAScript, DOM und BOM
Obwohl ECMAScript ein wichtiger Standard ist, ist es nicht der einzige Teil von JavaScript, natürlich auch nicht der einzige standardisierte Teil. In der Tat besteht eine vollständige JavaScript-Implementierung aus folgenden 3 verschiedenen Teilen:

ECMAScript
ECMAScript ist nicht mit jedem bestimmten Browser verknüpft, tatsächlich wird es auch keine Methoden für Benutzer-Eingaben und -Ausgaben erwähnt (dies unterscheidet es von Sprachen wie C, die auf externe Bibliotheken angewiesen sind, um solche Aufgaben zu erledigen). Was ist dann ECMAScript? Die Beschreibung des ECMA-262 Standards (Abschnitt 2) lautet wie folgt:
“ECMAScript kann verschiedene Hostumgebungen die grundlegenden Script-Programmierfähigkeiten zur Verfügung stellen, daher ist die grundlegende Skriptsprache von jedem spezifischen Hostumgebung getrennt geregelt... ...”
Web-Browser sind für ECMAScript eine Host-Umgebung, aber sie sind nicht die einzige. Tatsächlich gibt es unzählige andere Arten von Umgebungen (z.B. Nombas ScriptEase und ActionScript, das von Macromedia gleichzeitig in Flash und Director MX verwendet wird), die ECMAScript-Implementierungen aufnehmen können. Was regelt ECMAScript außerhalb des Browsers?
Kurz gesagt, ECMAScript beschreibt folgendes:
- Syntax
- Typen
- Anweisungen
- Schlüsselwörter
- Reservierte Wörter
- Operator
- Objekt
ECMAScript ist nur eine Beschreibung, die alle Eigenschaften, Methoden und Objekte der Skriptsprache definiert. Andere Sprachen können ECMAScript implementieren, um als Referenz für Funktionen zu dienen, wie z.B. JavaScript:

Jeder Browser hat seine eigene Implementierung der ECMAScript-Schnittstelle, die dann erweitert wird, um DOM und BOM zu enthalten (dies wird in den folgenden Abschnitten weiter erörtert). Natürlich gibt es auch andere Implementierungen und Erweiterungen der ECMAScript-Sprache, wie z.B. den Windows Script Host (Windows Scripting Host, WSH), ActionScript in Flash und Director MX von Macromedia sowie Nombas ScriptEase.
1. ECMAScript-Version
ECMAScript ist in mehrere verschiedene Versionen unterteilt und wird in einem Standard namens ECMA-262 definiert. Wie andere Standards wird ECMA-262 bearbeitet und aktualisiert. Wenn es eine Hauptaktualisierung gibt, wird eine neue Version des Standards veröffentlicht. Die neueste Version von ECMA-262 ist 5.1, die im Juni 2011 veröffentlicht wurde.
Die erste Version von ECMA-262 ist im Wesentlichen gleich dem Netscape JavaScript 1.1, nur dass alle mit dem Browser verbundenen Codes entfernt wurden, sowie einige kleine Anpassungen. Zunächst einmal erfordert ECMA-262 die Unterstützung des Unicode-Standards (um mehrsprachige Unterstützung zu ermöglichen). Zweitens erfordert es, dass Objekte plattformunabhängig sind (Netscape JavaScript 1.1 hat tatsächlich verschiedene Objektimplementierungen, z.B. der Date-Objekt, der von der Plattform abhängt). Dies ist einer der Hauptgründe, warum JavaScript 1.1 und 1.2 nicht der ersten Version der ECMA-262-Norm entsprechen.
Die meisten Updates der zweiten Version von ECMA-262 sind von编辑性本质。 Dieses Standardupdate wurde durchgeführt, um eine enge Übereinstimmung mit ISO/IEC-16262 zu erreichen, und hat keine zusätzlichen Inhalte hinzugefügt, geändert oder entfernt. ECMAScript hält in der Regel nicht die zweite Version ein.
Die dritte Version von ECMA-262 ist die erste真正的更新 der Norm. Sie bietet Updates für die Verarbeitung von Zeichenfolgen, Fehlerdefinitionen und numerische Ausgaben. Gleichzeitig unterstützt sie die regulären Ausdrücke, neue Steuerrichtlinien, try...catch-Fehlerbehandlung und einige kleine Änderungen, die zur Internationalisierung der Norm beitragen. Im Allgemeinen markiert dies den Übergang von ECMAScript zu einer echten Programmiersprache.
2. Was ist ECMAScript-Konformität
In ECMA-262 gibt es eine klare Definition der Konformität von ECMAScript. Ein Skriptsprache muss folgende vier grundlegenden Prinzipien erfüllen:
- Erfüllende Implementierungen müssen alle "Typen, Werte, Objekte, Eigenschaften, Funktionen und Programmiersprachen sowie Semantiken", wie sie in ECMA-262 beschrieben sind, unterstützen (ECMA-262, Seite 1)
- Erfüllende Implementierungen müssen die Unicode-Zeichenstandards (UCS) unterstützen
- Erfüllende Implementierungen können "zusätzliche Typen, Werte, Objekte, Eigenschaften und Funktionen" hinzufügen, die in ECMA-262 nicht spezifiziert sind. ECMA-262 beschreibt diese Erweiterungen als neue Objekte oder neue Eigenschaften von Objekten, die in der Norm nicht angegeben sind
- Erfüllende Implementierungen können die in ECMA-262 nicht definierten "Programm- und regulären Ausdrucksgrammatiken" unterstützen (was bedeutet, dass sie die eingebaute Unterstützung für reguläre Ausdrücke ersetzen oder erweitern können)
Alle ECMAScript-Implementierungen müssen den oben genannten Standard erfüllen.
3. Unterstützung von ECMAScript in Webbrowsern
Der Netscape Navigator 3.0, der JavaScript 1.1 enthielt, wurde 1996 veröffentlicht. Anschließend wurde das JavaScript 1.1-Spezifikation als Entwurf für einen neuen Standard an die ECMA vorgeschlagen. Mit dem revolutionären Erfolg von JavaScript begann Netscape mit der Entwicklung der Version 1.2. Allerdings nahm die ECMA den Entwurf von Netscape nicht an. Kurze Zeit nach der Veröffentlichung des Netscape Navigator 3.0 brachte Microsoft IE 3.0 heraus. Diese Version von IE enthielt JScript 1.0 (der Name für Microsofts eigene JavaScript-Implementierung), der ursprünglich als vergleichbar mit JavaScript 1.1 geplant war. Doch aufgrund unvollständiger Dokumentation und einigen unangemessenen Überschneidungen erreichte JScript 1.0 nicht das Niveau von JavaScript 1.1.
Vor der finalen Verabschiedung der ersten Version von ECMA-262 wurde Netscape Navigator 4.0 mit JavaScript 1.2 veröffentlicht, im Jahr 1997. Später im selben Jahr wurde der ECMA-262-Standard akzeptiert und standardisiert. Daher ist JavaScript 1.2 nicht mit der ersten Version von ECMAScript kompatibel, obwohl ECMAScript auf JavaScript 1.1 basieren sollte.
Der nächste Schritt für JScript war die Einführung von JScript 3.0 in IE 4.0 (Version 2.0 wurde zusammen mit IIS 3.0 veröffentlicht, aber nicht in Browsern enthalten). Microsoft bewarb JScript 3.0 als die erste echte Skriptsprache der Welt, die den ECMA-Standard erfüllt. Damals war ECMA-262 noch nicht endgültig verabschiedet, daher erlitt JScript 3.0 das gleiche Schicksal wie JavaScript 1.2 - es passte nicht in den endgültigen ECMAScript-Standard.
Netscape entschied sich, seine JavaScript-Implementierung in Netscape Navigator 4.06 zu aktualisieren. JavaScript 1.3 machte Netscape endlich vollständig mit der ersten Version von ECMAScript kompatibel. Netscape führte die Unterstützung für den Unicode-Standard ein und implementierte alle Objekte, die in JavaScript 1.2 eingeführt wurden, und machte sie plattformunabhängig.
Als Netscape seinen Quellcode als Mozilla-Projekt der Öffentlichkeit präsentierte, war geplant, dass JavaScript 1.4 in Netscape Navigator 5.0 integriert wird. Eine riskante Entscheidung - das komplette Neugestalten des Codes von Netscape von Grund auf zu zerstören diese Arbeit. JavaScript 1.4 wurde nur als Server-Skriptsprache für Netscape Enterprise Server veröffentlicht und wurde später nicht in Browsern integriert.
Heute folgen alle gängigen Webbrowser der dritten Version der ECMA-262.
下面的表格列出了大部分流行的 Web 浏览器中的 ECMAScript 支持:
Browser | DOM-Kompatibilität |
---|---|
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 页面:
<html> <head> <title>Sample Page</title> </head> <body> <p>hello world!</p> </body> </html>
这段代码可以用 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 wurde im Oktober 1998 von der W3C vorgeschlagen. Es besteht aus zwei Modulen, nämlich DOM Core und DOM HTML. Das erste bietet eine strukturelle Darstellung des Dokuments basierend auf XML, um jeden Teil des Dokuments zugreifen und manipulieren zu können; das zweite fügt einige HTML-spezifische Objekte und Methoden hinzu, um DOM Core zu erweitern.
Beachten Sie, dass DOM nicht nur JavaScript ist, in der Tat haben viele andere Sprachen es implementiert. Allerdings wurde der DOM in Web-Browsern mit ECMAScript implementiert und ist nun ein großer Bestandteil der JavaScript-Sprache.
DOM Level 1 ist ein Ziel, nämlich die Struktur des Dokuments zu planen, während das Ziel von DOM Level 2 weit breiter ist. Die Erweiterung des ursprünglichen DOM um die Unterstützung für Maus- und Benutzeroberflächeereignisse (DHTML unterstützt dies reichlich), Bereiche, Durchsuchung (wiederholte Ausführung von DOM-Dokumentmethoden) und die Unterstützung für CSS (Cascading Style Sheets) durch die hinzugefügte Objekt-Schnittstelle. Der ursprüngliche DOM Core, der durch Level 1 eingeführt wurde, unterstützt auch XML-Namensräume.
DOM Level 2 führte mehrere neue DOM-Module ein, die für die Verarbeitung neuer Schnittstellenarten verwendet werden:
- DOM-Ansicht - Beschreibung der Verfolgung verschiedener Ansichten des Dokuments (d.h. vor und nach der CSS-Stilisierung)
- DOM-Event - Beschreibung der Schnittstellen für Ereignisse
- DOM-Stil - Beschreibung der Schnittstellen zur Verarbeitung von CSS-basierten Stilen
- DOM-Throughput und -Bereich - Beschreibung der Schnittstellen zur Durchsuchung und Manipulation des Dokumentbaums
DOM Level 3 führte Methoden zur einheitlichen Lade- und Speicherung von Dokumenten (enthalten in den neuen Modulen DOM Load and Save) und Methoden zur Validierung von Dokumenten (DOM Validation) ein, was die Erweiterung von DOM weiter voranbrachte. In Level 3 wurde DOM Core erweitert, um alle XML 1.0-Funktionen zu unterstützen, einschließlich XML Infoset, XPath und XML Base.
Bei der Arbeit mit DOM kann es vorkommen, dass jemand DOM Level 0 zitiert. Beachten Sie, dass es根本没有 DOM Level 0 als Standard gibt, es ist nur ein historischer Referenzpunkt für DOM (DOM Level 0 bezieht sich auf den ursprünglichen DHTML, der in IE 4.0 und Netscape Navigator 4.0 unterstützt wurde).
3. Andere DOM
Neben DOM Core und DOM HTML haben auch andere Sprachen ihre eigenen DOM-Standards veröffentlicht. Diese sind alle auf XML basierend, und jeder DOM fügt der entsprechenden Sprache spezifische Methoden und Schnittstellen hinzu:
- Skalierbare Vektorgraphik (SVG) 1.0
- Digitales Markupsprache (MathML) 1.0
- Synchronisierte Multimedia-Integrationssprache (SMIL)
Anmerkung:Wenn Sie mehr über dieses Thema lernen möchten, besuchen Sie bitte CodeW3C. SMIL-Anleitung und SVG-Anleitung.
Darüber hinaus haben auch andere Sprachen ihre eigenen DOM-Implementierungen entwickelt, wie z.B. das XML-User-Interface-Sprache (XUL) von Mozilla. Nur die oben genannten Sprachen sind von der W3C als Empfehlungsstandard anerkannt.
Unterstützung von DOM in Web-Browsern
DOM war bereits ein Standard, bevor Web-Browser damit begannen, es zu implementieren. IE versuchte DOM erstmals in Version 5.0, hatte aber erst ab Version 5.5 wirkliches DOM-Unterstützung, IE 5.5 implementierte DOM Stufe 1. Seitdem hat IE keine neuen DOM-Funktionen eingeführt.
Netscape führte die Unterstützung von DOM erst ab Netscape 6 (Mozilla 0.6.0) ein. Derzeit hat Mozilla die beste Unterstützung für DOM, die vollständige Stufe 1, fast alle Stufe 2 und einen Teil der Stufe 3 implementiert. (Das Ziel des Mozilla-Entwicklerteams ist es, einen Browser zu erstellen, der 100% mit den Standards kompatibel ist, und ihre Arbeit hat sich ausgezahlt.)
Opera bis zur Version 7.0 unterstützte DOM, und Safari hat auch die meisten DOM Stufe 1 implementiert. Sie sind fast auf dem gleichen Niveau wie IE 5.5, und in einigen Fällen sogar über IE 5.5 hinaus. Was die Unterstützung von DOM betrifft, sind alle Browser weit hinter Mozilla zurückgeblieben. In der folgenden Tabelle sind die Unterstützung von DOM durch häufig verwendete Browser aufgeführt.
Browser | DOM-Kompatibilität |
---|---|
Netscape Navigator 1.0 - 4.x | - |
Netscape 6.0+ (Mozilla 0.6.0+) | Stufe 1, Stufe 2, Stufe 3 (Teilweise) |
IE 2.0 - 4.x | - |
IE 5.0 | Stufe 1 (mindestens) |
IE 5.5+ | Stufe 1 (fast alles) |
Opera 1.0 - 6.0 | - |
Opera 7.0+ | Stufe 1 (fast alles), Stufe 2 (Teilweise) |
Safari 1.0+/Konqueror ~ 2.0+ | Stufe 1 |
Anmerkung:Wenn Sie weiteres Wissen über DOM erlernen möchten, besuchen Sie bitte CodeW3C. HTML DOM-Anleitung und XML DOM-Anleitung.
BOM
IE 3.0 und Netscape Navigator 3.0 boten eine Funktion - BOM (Browser Object Model), mit der auf das Browserfenster zugegriffen und darauf gearbeitet werden konnte. Mit dem BOM können Entwickler Fenster verschieben, den Text in der Statusleiste ändern und andere Aktionen ausführen, die nicht direkt mit dem Inhalt der Seite zusammenhängen. Was den BOM einzigartig macht und gleichzeitig oft in Frage gestellt wird, ist die Tatsache, dass er nur ein Teil von JavaScript ist und keine relevanten Standards hat.
Der BOM behandelt hauptsächlich Browserfenster und Frames, obwohl typische browserübergreifende JavaScript-Erweiterungen oft als Teil des BOM betrachtet werden. Dazu gehören:
- Neues Browserfenster öffnen
- Verschieben, Schließen des Browserfensters und Anpassen der Fenstergröße
- Objekt, das detaillierte Informationen über den Webbrowser bereitstellt
- Objekt, das detaillierte Informationen über die Bildschirmauflösung des Benutzers bereitstellt
- Unterstützung für Cookies
- IE erweiterte den BOM und fügte die Klasse ActiveXObject hinzu, durch die ActiveX-Objekte mit JavaScript instanziert werden können
Da es keine relevanten BOM-Standards gibt, hat jeder Browser seine eigene BOM-Implementierung. Es gibt einige faktische Standards, wie z.B. ein Window-Objekt und ein Navigation-Objekt, aber jeder Browser kann für diese Objekte oder andere Objekte eigene Eigenschaften und Methoden definieren.
Siehe auch:
- Vorherige Seite Geschichte von JavaScript
- Nächste Seite Syntax von ECMAScript