Javanische Schrift

JavaScript (hat manchmal JS abgekürzt), ist eine Prototyp-basierte scripting Sprache, die, schwach getippte, allgemeine Zweck-Programmiersprache dynamisch ist und erstklassige Funktionen hat. Es ist eine Mehrparadigma-Sprache, objektorientierte, befehlende und funktionelle Programmierstile unterstützend.

JavaScript wurde im ECMAScript Sprachstandard formalisiert und wird in erster Linie in der Form der Kundenseite JavaScript, durchgeführt als ein Teil eines WWW-Browsers verwendet, um erhöhte Benutzerschnittstellen und dynamische Websites zur Verfügung zu stellen. Das ermöglicht programmatic Zugang zu rechenbetonten Gegenständen innerhalb einer Gastgeber-Umgebung.

Der Gebrauch von JavaScript in Anwendungen außerhalb Webseiten — zum Beispiel in PDF Dokumenten, mit der Seite spezifischen Browsern und Tischprodukten — ist auch bedeutend. Neuere und schnellere JavaScript VMs und Fachwerk, das auf sie (namentlich Node.js) gebaut ist, haben auch die Beliebtheit von JavaScript für Webanwendungen der Server-Seite vergrößert.

JavaScript verwendet Syntax unter Einfluss dieses von C. JavaScript kopiert viele Namen und Namengeben-Vereinbarung von Java, aber die zwei Sprachen sind sonst ohne Beziehung und haben sehr verschiedene Semantik. Die Schlüsseldesigngrundsätze innerhalb von JavaScript werden von Selbst und Schema-Programmiersprachen genommen.

Geschichte

Geburt an Netscape

JavaScript wurde in Netscape von Brendan Eich ursprünglich entwickelt. Mit Microsoft über das Internet kämpfend, hat Netscape ihre Client/Server-Lösung als ein verteilter OS betrachtet, eine tragbare Version des Sonne-Mikrosystems Java führend. Weil Java ein Mitbewerber von C ++ war und nach Berufsprogrammierern gezielt hat, hat Netscape auch gewollt ein Leichtgewichtler hat Sprache interpretiert, die Java durch das Appellieren an unprofessionelle Programmierer wie der VB des Microsofts ergänzen würde. (sieh #JavaScript und Java)

Entwickelt unter dem Namen Mokka war LiveScript der offizielle Name für die Sprache, als es sich zuerst in Beta-Ausgaben des Netscape Navigators 2.0 im September 1995 eingeschifft hat, aber es war umbenannter JavaScript in einer gemeinsamen Ansage mit Sonne-Mikrosystemen am 4. Dezember 1995, als es in der Browser-Version 2.0B3 von Netscape aufmarschiert wurde.

Die Namensänderung von LiveScript bis JavaScript ist grob mit Netscape zusammengefallen, der Unterstützung für die javanische Technologie in seinem Netscape Navigator-WWW-Browser hinzufügt. Die Endwahl des Namens hat Verwirrung verursacht, den Eindruck gebend, dass die Sprache ein Nebenprodukt der javanischen Programmiersprache war, und die Wahl von vielen als ein Markttrick von Netscape charakterisiert worden ist, um JavaScript den Stempel dessen zu geben, was dann die heiße neue Webprogrammiersprache war.

Es ist auch gefordert worden, dass der Name der Sprache das Ergebnis eines Co-Marktgeschäfts zwischen Netscape und Sun als Entgelt für Netscape ist, der die javanische Durchlaufzeit der Sonne mit seinem dann dominierenden Browser stopft.

Server-Seite JavaScript

Inzwischen hat Netscape auch die Sprache für die Server-Seite scripting im Netscape Unternehmensserver, zuerst veröffentlicht im Dezember 1994 eingeführt

.

Adoption durch Microsoft

JavaScript hat sehr schnell weit verbreiteten Erfolg als eine Kundenseite scripting Sprache für Webseiten gewonnen.

Microsoft hat Unterstützung von JavaScript in seinem eigenen WWW-Browser, Internet Explorer, in der Version 3.0, veröffentlicht im August 1996 eingeführt.

Der webserver des Microsofts, Internetinformationsserver, hat Unterstützung für die Server-Seite scripting in JavaScript mit der Ausgabe 3.0 (1996) eingeführt.

Microsoft hat angefangen, webpage scripting das Verwenden des Überbegriffes Dynamisches HTML zu fördern.

Die Durchführung von JavaScript des Microsofts wurde später zu JScript umbenannt, um Handelsmarke-Probleme zu vermeiden.

JScript hat neue Datum-Methoden hinzugefügt, die Y2K-problematischen Methoden in JavaScript zu befestigen, die auf Javas Klasse basiert haben.

Standardisierung

Im November 1996 hat Netscape bekannt gegeben, dass es JavaScript Ecma International für die Rücksicht als ein Industriestandard vorgelegt hatte, und nachfolgende Arbeit auf die standardisierte Version genannt ECMAScript hinausgelaufen ist.

Spätere Entwicklungen

JavaScript ist eine der populärsten Programmiersprachen im Web geworden. Am Anfang, jedoch, haben viele Berufsprogrammierer die Sprache verunglimpft, weil sein Zielpublikum Webautoren und andere solche "Dilettanten" unter anderen Gründen war. Das Advent von Ajax hat JavaScript in den Scheinwerfer zurückgegeben und hat mehr berufliche Programmieraufmerksamkeit gelenkt. Das Ergebnis war eine Proliferation des umfassenden Fachwerks und der Bibliotheken, hat Programmiermethoden von JavaScript verbessert, und hat Gebrauch von JavaScript außerhalb WWW-Browser, wie gesehen, durch die Proliferation der Server-Seite Plattformen von JavaScript vergrößert.

Im Januar 2009 wurde das Projekt von CommonJS mit der Absicht gegründet, eine allgemeine Standardbibliothek hauptsächlich für die Entwicklung von JavaScript außerhalb des Browsers anzugeben.

Handelsmarke

Heute ist "JavaScript" eine Handelsmarke von Oracle Corporation. Es wird laut der Lizenz für die Technologie verwendet, die erfunden und durch Netscape Kommunikationen und aktuelle Entitäten wie das Mozilla Fundament durchgeführt ist.

Eigenschaften

Die folgenden Eigenschaften sind für das ganze Anpassen ECMAScript Durchführungen, wenn ausführlich nicht angegeben, sonst üblich.

Befehlsform und strukturiert

JavaScript unterstützt viel von der strukturierten Programmiersyntax von C (z.B, Behauptungen, Schleifen, Behauptungen, usw.). Eine teilweise Ausnahme ist scoping: C-style Block-Niveau scoping wird nicht unterstützt (statt dessen JavaScript hat Funktionsniveau scoping). JavaScript 1.7, jedoch, Unterstützungsblock-Niveau scoping mit dem Schlüsselwort. Wie C macht JavaScript eine Unterscheidung zwischen Ausdrücken und Behauptungen. Ein syntaktischer Unterschied zu C ist automatische Strichpunkt-Einfügung, in der die Strichpunkte enden die Behauptungen können weggelassen werden.

Dynamisch

das dynamische Schreiben: Als auf den meisten scripting Sprachen werden Typen mit Werten vereinigt, nicht mit Variablen. Zum Beispiel konnte eine Variable zu einer Zahl, dann späterer Rückprall zu einer Schnur gebunden werden. JavaScript unterstützt verschiedene Weisen, den Typ eines Gegenstands einschließlich des Ente-Schreibens zu prüfen.

Gegenstand hat gestützt: JavaScript ist fast völlig Gegenstand-basiert. Gegenstände von JavaScript sind assoziative Reihe, die mit Prototypen (sieh unten) vermehrt ist. Gegenstand-Eigentumsnamen sind Schnur-Schlüssel: Und, sind die Punktnotation gleichwertig, die syntaktischer Zucker ist. Eigenschaften und ihre Werte können hinzugefügt, geändert, oder an der Durchlaufzeit gelöscht werden. Die meisten Eigenschaften eines Gegenstands (und diejenigen auf seiner Prototyp-Erbe-Kette) können mit einer Schleife aufgezählt werden. JavaScript hat eine kleine Zahl von eingebauten Gegenständen solcher als und.

Laufzeiteinschätzung: JavaScript schließt eine Funktion ein, die Behauptungen zur Verfügung gestellt als Schnuren an der Durchlaufzeit durchführen kann.

Funktionell

erstklassige Funktionen: Funktionen sind erstklassig; sie sind Gegenstände selbst. Als solcher haben sie Eigenschaften und Methoden, solcher als und; und sie können Variablen zugeteilt werden, sind als Argumente gegangen, die durch andere Funktionen zurückgegeben sind, und haben wie jeder andere Gegenstand manipuliert. Jede Verweisung auf eine Funktion erlaubt ihm, mit dem Maschinenbediener angerufen zu werden.

verschachtelte Funktionen: "Innere" oder "verschachtelte" Funktionen sind innerhalb einer anderen Funktion definierte Funktionen. Sie werden jedes Mal geschaffen, wenn die Außenfunktion angerufen wird. Zusätzlich dazu wird das Spielraum der Außenfunktion, einschließlich irgendwelcher Konstanten, lokaler Variablen und Argument-Werte, ein Teil des inneren Staates jedes inneren Funktionsgegenstands sogar, nachdem die Ausführung der Außenfunktion aufhört.

Verschlüsse: JavaScript erlaubt verschachtelten Funktionen, mit dem lexikalischen Spielraum in der Kraft an ihrer Definition geschaffen zu werden, und hat einen Maschinenbediener, um sie jetzt oder später anzurufen. Diese Kombination des Codes, der außerhalb des Spielraums durchgeführt werden kann, in dem es mit seinem eigenen Spielraum definiert wird, um während dieser Ausführung zu verwenden, wird einen Verschluss in der Informatik genannt.

Prototyp-basiert

Prototypen: JavaScript verwendet Prototypen statt Klassen für das Erbe. Es ist möglich, viele klassenbasierte Eigenschaften mit Prototypen in JavaScript vorzutäuschen.

Funktionen als Gegenstand-Konstrukteure: Funktionen verdoppeln sich als Gegenstand-Konstrukteure zusammen mit ihrer typischen Rolle. Das Vorbefestigen eines Funktionsanrufs damit schafft einen neuen Gegenstand und Anrufe, die mit seinem lokalen Schlüsselwort fungieren, das zu diesem Gegenstand für diese Beschwörung gebunden ist. Das Eigentum des Konstrukteurs bestimmt den für den inneren Prototyp des neuen Gegenstands verwendeten Gegenstand. Die eingebauten Konstrukteure von JavaScript, solcher als, haben auch Prototypen, die modifiziert werden können.

Funktionen als Methoden: Verschieden von vielen objektorientierten Sprachen gibt es keine Unterscheidung zwischen einer Funktionsdefinition und einer Methode-Definition. Eher kommt die Unterscheidung während des Funktionsbenennens vor; eine Funktion kann als eine Methode genannt werden. Wenn eine Funktion als eine Methode eines Gegenstands genannt wird, wird das lokale Schlüsselwort der Funktion zu diesem Gegenstand für diese Beschwörung gebunden.

Verschieden

Laufzeitumgebung: JavaScript verlässt sich normalerweise auf eine Laufzeitumgebung (z.B in einem WWW-Browser), um Gegenstände und Methoden zur Verfügung zu stellen, durch die Schriften "mit der Außenwelt" aufeinander wirken können. Tatsächlich verlässt es sich auf die Umgebung, um die Fähigkeit zur Verfügung zu stellen, Schriften einzuschließen zu/importieren (z.B HTML

Variadic-Funktionen: Eine unbestimmte Zahl von Rahmen kann zu einer Funktion passiert werden. Die Funktion kann auf sie durch formelle Rahmen und auch durch den lokalen Gegenstand zugreifen.

Reihe und Gegenstand-Druckfehler: Wie viele scripting Sprachen können Reihe und Gegenstände (assoziative Reihe auf anderen Sprachen) jeder mit einer kurz gefassten Abkürzungssyntax geschaffen werden. Tatsächlich bilden diese Druckfehler die Basis des JSON Datenformats.

regelmäßige Ausdrücke: JavaScript unterstützt auch regelmäßige Ausdrücke, die gewissermaßen Perl ähnlich sind, die eine kurze und starke Syntax für die Textmanipulation zur Verfügung stellen, die hoch entwickelter ist als die eingebauten Zeichenkettenfunktionen.

Mit dem Verkäufer spezifische Erweiterungen

JavaScript wird durch das Mozilla Fundament offiziell geführt, und neue Spracheigenschaften werden regelmäßig hinzugefügt. Jedoch unterstützen nur einige non-Mozilla Motoren von JavaScript diese neuen Eigenschaften:

  • Eigentumshauer und Setter-Funktionen (auch unterstützt von WebKit, Oper, ActionScript und Kies)
  • bedingte Klauseln
  • Iterator-Protokoll, das von der Pythonschlange angenommen ist
  • seichte Generator-Koroutinen, die auch von der Pythonschlange angenommen sind
  • Reihe-Verständnisse und Generator-Ausdrücke, die auch von der Pythonschlange angenommen sind
  • richtiges Block-Spielraum über das Schlüsselwort
  • Reihe und Gegenstand destructuring (beschränkte Form des Musters, das zusammenpasst)
  • kurze Funktionsausdrücke
  • ECMAScript für XML (E4X), eine Erweiterung, die heimische XML-Unterstützung zu ECMAScript hinzufügt

Syntax und Semantik

, die letzte Version der Sprache ist JavaScript 1.8.5. Es ist eine Obermenge von ECMAScript (ECMA-262) Ausgabe 3. Erweiterungen auf die Sprache, einschließlich teilweisen ECMAScript für XML (E4X) (ECMA-357) Unterstützung und experimentelle Eigenschaften, die für die Einschließung in ECMAScript zukünftige Ausgaben betrachtet sind, werden hier dokumentiert.

Einfache Beispiele

Ein einfacher wachsamer Kasten:

Alarmsignal ("alarmieren Alarmsignal");

</syntaxhighlight>

Eine einfache rekursive Funktion:

fungieren Sie factorial (n) {\

wenn (n === 0) {\

kehren Sie 1 zurück;

}\

geben Sie n * factorial (n - 1) zurück;

}\

</syntaxhighlight>

Anonyme Funktion (oder Lambda) Syntax und Verschluss-Beispiel:

fungieren Sie displayClosure {\

var zählen = 0;

geben Sie Funktion {\zurück

kehren Sie ++ Zählung zurück;

};

}\

var inc = displayClosure ;

inc ;//gibt 1 zurück

inc ;//gibt 2 zurück

inc ;//gibt 3 zurück

</syntaxhighlight>

Funktionsdemonstration von Variadic (ist eine spezielle Variable).

fungieren Sie Summe {\

var i, x = 0;

für (ich = 0; ich

Fortgeschritteneres Beispiel

Dieser Beispielcode Vitrinen verschiedene Eigenschaften von JavaScript.

/* Findet das niedrigste Gemeinsame Vielfache von zwei Zahlen * /

fungieren Sie LCMCalculator (x, y) {//Konstrukteur-Funktion

var checkInt = fungieren (x) {//innere Funktion

wenn (x % 1! == 0) {\

werfen Sie neuer TypeError (x + "ist nicht eine ganze Zahl");//werfen eine Ausnahme

}\

geben Sie x zurück;

};

this.a = checkInt (x);

//^-Strichpunkte sind fakultativer

this.b = checkInt (y);

}\

//Der Prototyp von von einem Konstrukteur geschaffenen Gegenstand-Beispielen ist

//das "Prototyp"-Eigentum dieses Konstrukteurs.

LCMCalculator.prototype = {//wenden wörtlichen ein

Konstrukteur: LCMCalculator,//, wenn sie einen Prototyp wiederzuteilen, setzen das Konstrukteur-Eigentum passend

gcd: Funktion {//Methode, die den größten allgemeinen Teiler berechnet

//Euklidischer Algorithmus:

var = Math.abs (this.a), b = Math.abs (this.b), t;

wenn (a

}\

//Zeichen: Die Karte der Reihe und forEach wird in JavaScript 1.6 definiert.

//Sie werden hier verwendet, um die innewohnende funktionelle Natur von JavaScript zu demonstrieren.

25, 55], [21, 56], [22, 58], [28, 56.map (Funktion (Paar) {//ordnen wörtlich +, Funktion kartografisch darstellend

geben Sie neuen LCMCalculator (Paar [0], Paar [1]) zurück;

}).sort (Funktion (a, b) {//Sorte mit dieser vergleichenden Funktion

geben Sie a.lcm - b.lcm zurück;

}).forEach (Funktion (obj) {\

Produktion (obj +", gcd = "+ obj.gcd +", lcm = "+ obj.lcm );

});

</syntaxhighlight>

Die folgende Produktion sollte im Fenster des Browsers gezeigt werden.

LCMCalculator: = 28, b = 56, gcd = 28, lcm = 56

LCMCalculator: = 21, b = 56, gcd = 7, lcm = 168

LCMCalculator: = 25, b = 55, gcd = 5, lcm = 275

LCMCalculator: = 22, b = 58, gcd = 2, lcm = 638

</syntaxhighlight>

Verwenden Sie in Webseiten

Der grösste Teil der üblichen Anwendung von JavaScript soll Funktionen schreiben, die darin eingebettet oder von HTML-Seiten eingeschlossen werden, und die mit Document Object Model (DOM) der Seite aufeinander wirken. Einige einfache Beispiele dieses Gebrauchs sind:

  • Das Laden neuen Seiteninhalts oder das Einreichen von Daten zum Server über AJAX, ohne die Seite umzuladen (zum Beispiel könnte ein soziales Netz dem Benutzer erlauben, Status-Aktualisierungen anzuschlagen, ohne die Seite zu verlassen)
  • Zeichentrickfilm von Seitenelementen, sie in und verwelkend, sie in der Größe anpassend, sie usw. bewegend.
  • Interaktiver Inhalt, zum Beispiel Spiele und das Spielen von Audio- und Video-
  • Die Bestätigung von Eingangswerten eines Webs formt sich, um sicherzustellen, dass sie annehmbar sind, bevor sie dem Server vorgelegt werden.
  • Das Übertragen der Information über die Lesen-Gewohnheiten und das Durchsuchen des Benutzers von Tätigkeiten zu verschiedenen Websites. Webseiten tun oft das für Webanalytik, das Anzeige-Verfolgen, die Personalisierung oder die anderen Zwecke.

Weil Code von JavaScript lokal in einem Browser eines Benutzers laufen kann (aber nicht auf einem entfernten Server), kann der Browser auf Benutzerhandlungen schnell antworten, eine Anwendung mehr antwortend machend. Außerdem kann Code von JavaScript Benutzerhandlungen entdecken, welches HTML allein nicht wie individuelle Anschläge kann. Anwendungen wie Gmail nutzen das aus: Viel von der Benutzerschnittstelle-Logik wird in JavaScript und Absendungsbitten von JavaScript um die Information (wie der Inhalt einer E-Mail-Nachricht) zum Server geschrieben. Die breitere Tendenz von Ajax, der ähnlich programmiert, nutzt diese Kraft aus.

Ein Motor von JavaScript (auch bekannt als Dolmetscher von JavaScript oder Durchführung von JavaScript) ist ein Dolmetscher, der Quellcode von JavaScript interpretiert und die Schrift entsprechend durchführt. Der erste Motor von JavaScript wurde von Brendan Eich an Netscape Communications Corporation für den Netscape Navigator-WWW-Browser geschaffen. Der Motor, codegenannt SpiderMonkey, wird in C durchgeführt. Es ist (in JavaScript 1.5) seitdem aktualisiert worden, um sich der ECMA-262 Ausgabe 3 anzupassen. Der Kies-Motor, geschaffen in erster Linie von Norris Boyd (früher Netscape; jetzt an Google) ist eine Durchführung von JavaScript in Java. Kies, wie SpiderMonkey, ist ECMA-262 entgegenkommende Ausgabe 3.

Ein WWW-Browser ist bei weitem die allgemeinste Gastgeber-Umgebung für JavaScript. WWW-Browser verwenden normalerweise die öffentliche API, um "Gastgeber-Gegenstände zu schaffen, die" dafür verantwortlich sind, Document Object Model (DOM) in JavaScript zu widerspiegeln. Der Webserver ist eine andere allgemeine Anwendung des Motors. JavaScript webserver würde Gastgeber-Gegenstände ausstellen, die HTTP-Bitte- und Ansprechgegenstände vertreten, die ein Programm von JavaScript dann manipulieren konnte, um Webseiten dynamisch zu erzeugen.

Weil JavaScript die einzige Sprache ist, für die der populärste Browser-Anteil unterstützt, ist es eine Zielsprache für vieles Fachwerk auf anderen Sprachen geworden, wenn auch JavaScript nie beabsichtigt war, um solch eine Sprache zu sein. Trotz der zu seiner dynamischen Natur innewohnenden Leistungsbeschränkungen hat die zunehmende Geschwindigkeit von Motoren von JavaScript die Sprache ein überraschend ausführbares Kompilationsziel gemacht.

Beispiel-Schrift

Unten ist ein minimales Beispiel einer standardanpassenden Webseite, die JavaScript enthält (HTML 4.01 Syntax verwendend), und der DOM:

document.write ('Hallo Welt!');

var h1 = document.getElementById ("Kopfball");//hält eine Verweisung auf

h1 = document.getElementsByTagName ("h1") [0];//das Zugreifen auf dasselbe

</Schrift>

Ihr Browser entweder unterstützt JavaScript nicht, oder ließ JavaScript abdrehen.

</noscript>

</Körper>

</HTML>

</syntaxhighlight>

Vereinbarkeitsrücksichten

Weil Läufe von JavaScript in weit unterschiedlichen Umgebungen, einem wichtigen Teil der Prüfung und des Beseitigens prüfen und nachprüfen sollen, dass JavaScript über vielfache Browser arbeitet.

Die DOM-Schnittstellen, um Webseiten zu manipulieren, sind nicht ein Teil des ECMAScript Standards, oder von JavaScript selbst. Offiziell werden die DOM-Schnittstellen durch eine getrennte Standardisierungsanstrengung durch den W3C definiert; in der Praxis unterscheiden sich Browser-Durchführungen von den Standards und von einander, und nicht alle Browser führen JavaScript durch.

Um sich mit diesen Unterschieden zu befassen, können Autoren von JavaScript versuchen, standardentgegenkommenden Code zu schreiben, der auch richtig durch die meisten Browser durchgeführt wird; dem fehlend, können sie Code schreiben, der für die Anwesenheit des bestimmten Browsers überprüft, zeigt und benimmt sich verschieden, wenn sie nicht verfügbar sind. In einigen Fällen können zwei Browser eine Eigenschaft sowohl durchführen, aber mit dem verschiedenen Verhalten und den Autoren kann es praktisch finden, um zu entdecken, was Browser führt und ändern Sie das Verhalten ihrer Schrift zusammenzupassen. Programmierer können auch Bibliotheken oder Werkzeuge verwenden, die Browser-Unterschiede in Betracht ziehen.

Außerdem können Schriften nicht für einige Benutzer arbeiten. Zum Beispiel kann ein Benutzer:

  • verwenden Sie einen alten oder seltenen Browser mit der unvollständigen oder ungewöhnlichen DOM-Unterstützung,
  • verwenden Sie einen PDA oder Mobiltelefonbrowser, der JavaScript, nicht durchführen kann
  • haben Sie Ausführung von JavaScript arbeitsunfähig als eine Sicherheitsvorsichtsmaßnahme,
  • verwenden Sie einen Rede-Browser wegen, zum Beispiel, eine Sehunfähigkeit.

Um diese Benutzer zu unterstützen, können Webautoren versuchen, Seiten zu schaffen, die sich anmutig auf Benutzeragenten (Browser) abbauen, die JavaScript der Seite nicht unterstützen. Insbesondere die Seite sollte verwendbar bleiben, obgleich ohne die Extraeigenschaften, die JavaScript hinzugefügt hätte. Eine alternative Annäherung, dass viele vorzuziehend finden, ist zum ersten Autor-Inhalt das Verwenden grundlegender Technologien, die in allen Browsern arbeiten, dann den Inhalt für Benutzer erhöhen, die JavaScript ermöglichen ließen. Das ist als progressive Erhöhung bekannt.

Zugänglichkeit

Das Annehmen, dass der Benutzer nicht hat, hat seine Ausführung, Kundenseite-Web unbrauchbar gemacht, das JavaScript geschrieben werden sollte, um die Erfahrungen von Besuchern mit visuellen oder physischen Körperbehinderungen zu erhöhen, und sicher vermeiden sollte, Information diesen Besuchern zu verweigern.

Schirm-Leser, die durch den Rollladen verwendet sind und teilweise gesichtet sind, können JavaScript-bewusst sein und können so zugreifen und die Seite DOM lesen, nachdem die Schrift es verändert hat. Das HTML sollte so kurz, schiffbar und semantisch reich sein wie möglich, ob die Schriften gelaufen sind oder nicht. JavaScript sollte auf mit der Maus spezifischen Ereignissen nicht völlig vertrauensvoll sein, um seine Vorteile Benutzern zu verweigern, die entweder keine Maus verwenden können, oder die beschließen, die Tastatur aus beliebigem Grund zu bevorzugen. Ebenso, obwohl Hypertext-Links und webforms befahren und von der Tastatur bedient werden können, sollte zugänglicher JavaScript nicht Tastatur-Ereignisse auch verlangen. Es gibt mit dem Gerät unabhängige Ereignisse solcher als, und die in den meisten Fällen vorzuziehend sind.

JavaScript sollte in einem Weg nicht verwendet werden, der verwirrend oder jedem Webbenutzer desorientierend ist. Zum Beispiel wird das Verwenden der Schrift, um die normale Funktionalität des Browsers, solcher als durch das Ändern des Weges der Zurückknopf oder die erfrischen Ereignis-Arbeit sich zu verändern oder unbrauchbar zu machen, gewöhnlich am besten vermieden. Ebenso reduziert das Auslösen von Ereignissen, deren der Benutzer nicht bewusst sein kann, den Sinn des Benutzers der Kontrolle, wie unerwartete Scripted-Änderungen zum Seiteninhalt tun.

Häufig wird der Prozess, eine komplizierte Webseite so zugänglich zu machen, wie möglich ein nichttriviales Problem, wo Probleme Sachen der Debatte und Meinung werden, und wo Kompromisse schließlich notwendig sind. Jedoch entwickeln sich Benutzeragenten und assistive Technologien ständig, und neue Richtlinien und relevante Information werden ständig im Web veröffentlicht.

Sicherheit

JavaScript und der DOM stellen das Potenzial für böswillige Autoren zur Verfügung, um Schriften zu liefern, um auf einem Kundencomputer über das Web zu laufen. Browser-Autoren enthalten das riskiert, zwei Beschränkungen zu verwenden. Erstens laufen Schriften in einem Sandkasten, in dem sie nur webzusammenhängende Handlungen, nicht Mehrzweckprogrammieraufgaben wie das Schaffen von Dateien durchführen können. Zweitens werden Schriften durch dieselbe Ursprung-Politik beschränkt: Schriften von einer Website haben Zugang zur Information wie Benutzernamen, Kennwörter oder an eine andere Seite gesandte Plätzchen nicht. Die meisten JavaScript-verwandten Sicherheitsprogrammfehler sind Brüche entweder derselben Ursprung-Politik oder des Sandkastens.

Quer-Seite-Verwundbarkeit

Ein allgemeines JavaScript-zusammenhängendes Sicherheitsproblem ist Quer-Seite scripting, oder XSS, eine Übertretung der Politik des desselben-Ursprungs. XSS Verwundbarkeit kommt vor, wenn ein Angreifer im Stande ist, eine Zielwebsite wie eine Online-Bankverkehrswebsite zu verursachen, eine böswillige Schrift in den einem Opfer präsentierten webpage einzuschließen. Die Schrift in diesem Beispiel kann dann auf die Bankverkehrsanwendung mit den Vorzügen des Opfers zugreifen, potenziell heimliche Information bekannt gebend oder Geld ohne die Genehmigung des Opfers übertragend. Eine Lösung der XSS Verwundbarkeit ist, das HTML-Entgehen durch das Anzeigen von unvertrauten Daten zu verwenden.

Einige Browser schließen teilweisen Schutz gegen widerspiegelte XSS-Angriffe ein, in denen der Angreifer eine URL-ADRESSE einschließlich der böswilligen Schrift zur Verfügung stellt. Jedoch sind sogar Benutzer jener Browser für andere XSS-Angriffe, wie diejenigen verwundbar, wo der böswillige Code in einer Datenbank versorgt wird. Nur das richtige Design von Webanwendungen auf der Server-Seite kann XSS völlig verhindern.

XSS Verwundbarkeit kann auch wegen Durchführungsfehler bei Browser-Autoren vorkommen.

Eine andere Quer-Seite-Verwundbarkeit ist Quer-Seite-Bitte-Fälschung oder CSRF. In CSRF beschwindelt der Code auf einer Seite eines Angreifers den Browser des Opfers in die Einnahme von Handlungen, die der Benutzer an einer Zielseite (wie überwechselndes Geld an einer Bank) nicht beabsichtigt hat. Es arbeitet, weil, wenn sich die Zielseite nur auf Plätzchen verlässt, um Bitten zu beglaubigen, dann werden Bitten, die durch den Code auf der Seite des Angreifers begonnen sind, denselben legitimen Anmeldungsausweis wie vom Benutzer begonnene Bitten tragen. Im Allgemeinen ist die Lösung von CSRF, einen Beglaubigungswert in einem verborgenen Form-Feld, und nicht nur in den Plätzchen zu verlangen, jede Bitte zu beglaubigen, die anhaltende Effekten haben könnte. Die Überprüfung des HTTP Referrer Kopfball kann auch helfen.

"Entführung von JavaScript" ist ein Typ des CSRF-Angriffs in der a

Verlegtes Vertrauen auf den Kunden

Entwickler von Client/Server-Anwendungen müssen anerkennen, dass unvertraute Kunden unter der Kontrolle von Angreifern sein können. So konnte jedes in JavaScript eingebettete Geheimnis von einem entschlossenen Gegner herausgezogen werden, und der Anwendungsautor kann nicht annehmen, dass sein JavaScript, wie beabsichtigt, oder überhaupt läuft. Einige Implikationen:

  • Website-Autoren können nicht vollkommen verbergen, wie ihr JavaScript funktioniert, weil der Code dem Kunden gesandt wird, und Code verfinstert hat, kann rückkonstruiert werden.
  • Form-Gültigkeitserklärung von JavaScript stellt nur Bequemlichkeit für Benutzer, nicht Sicherheit zur Verfügung. Wenn eine Seite nachprüft, dass der Benutzer seinen Begriffen des Dienstes oder Filterinvalide-Charakteren aus Feldern zugestimmt hat, die nur Zahlen enthalten sollten, muss es so auf dem Server, nicht nur dem Kunden tun.
  • Schriften können auswählend arbeitsunfähig sein, so kann auf JavaScript nicht verlassen werden, Operationen zu verhindern, die "Image sparen".
  • Es ist äußerst schlechte Praxis, um empfindliche Information wie Kennwörter in JavaScript einzubetten, weil es von einem Angreifer herausgezogen werden kann.

Browser und Steckcodierfehler

JavaScript stellt eine Schnittstelle einer breiten Reihe von Browser-Fähigkeiten zur Verfügung, von denen einige Fehler wie Pufferüberschwemmungen haben können. Diese Fehler können Angreifern erlauben, Schriften zu schreiben, die jeden Code führen würden, den sie auf dem System des Benutzers wünschen.

Diese Fehler haben Hauptbrowser einschließlich Firefox, Internet Explorers und Safari betroffen.

Plugins, wie Videoplayer, Adobe Flash, und die breite Reihe von Steuerungen von ActiveX ermöglicht standardmäßig in Microsoft Internet Explorer, kann auch Fehler haben, die über JavaScript, abbaufähig

sind

und solche Fehler sind in der Vergangenheit ausgenutzt worden.

In der Windows-Aussicht hat Microsoft versucht, die Gefahren von Programmfehlern wie Pufferüberschwemmungen durch das Laufen des Prozesses des Internet Explorers mit beschränkten Vorzügen zu enthalten. Google Chrom beschränkt ähnlich Seite renderers in seinem eigenen "Sandkasten".

Sandkasten-Durchführungsfehler

WWW-Browser sind dazu fähig, JavaScript außerhalb des Sandkastens mit den Vorzügen zu führen, die für zum Beispiel notwendig sind, schaffen Sie oder löschen Sie Dateien. Natürlich werden solche Vorzüge nicht gemeint, um anerkannt zu werden, vom Web zu codieren.

Falsch gewährende Vorzüge zu JavaScript vom Web haben eine Rolle in der Verwundbarkeit sowohl in Internet Explorer als auch in Firefox gespielt. In Windows XP Dienstsatz 2 hat Microsoft die Vorzüge von JSCRIPT in Internet Explorer degradiert.

Windows von Microsoft erlaubt Quelldateien von JavaScript auf einer Festplatte eines Computers, als Mehrzweck-, non-sandboxed Programme gestartet zu werden. Das macht JavaScript (wie VBScript) einen theoretisch lebensfähigen Vektoren für ein trojanisches Pferd, obwohl JavaScript trojanische Pferde in der Praxis ungewöhnlich sind. (Sieh Windows-Schrift-Gastgeber.)

Gebrauch außerhalb Webseiten

Zusätzlich zu WWW-Browsern und Servern werden Dolmetscher von JavaScript in mehreren Werkzeugen eingebettet. Jede dieser Anwendungen stellt sein eigenes Gegenstand-Modell zur Verfügung, das Zugang zur Gastgeber-Umgebung mit der Kernsprache von JavaScript zur Verfügung stellt, die größtenteils dasselbe in jeder Anwendung bleibt.

Eingebettete scripting Sprache

  • Die Chromerweiterungen von Google, die Erweiterungen der Oper, die Safari des Apfels 5 Erweiterungen, die Armaturenbrett-Produkte des Apfels, die Geräte des Microsofts, Yahoo! Produkte, Google Tischgeräte und Serence Klipfolio werden mit JavaScript durchgeführt.
  • Der Akrobat von Adobe und Adobe Reader unterstützen JavaScript in PDF Dateien.
  • Werkzeuge in Adobe Creative Suite, einschließlich Photogeschäftes, Illustrators, Dreamweavers, und InDesign, erlauben scripting durch JavaScript.
  • OpenOffice.org berücksichtigt Büroanwendungsgefolge JavaScript als eine seiner scripting Sprachen.
  • Die interaktive Musik-Signalverarbeitungssoftware veröffentlichter Max/MSP durch das Radfahren '74, bietet ein Modell von JavaScript seiner Umgebung für den Gebrauch durch Entwickler an. Es erlaubt viel genauere Kontrolle als der Verzug GUI-zentrisches Programmiermodell.
  • ECMAScript wurde in den VRML97 Standard für scripting Knoten von VRML Szene-Beschreibungsdateien eingeschlossen.
  • Ein hohes Ende Philips universale entfernte Tafeln, einschließlich TSU9600 und TSU9400, kann scripted das Verwenden eines mit Sitz in JavaScript Werkzeugs genannt ProntoScript sein.
  • Bereich ist eine offene Quelle, und böses Plattform-Computerprogramm hat in erster Linie vorgehabt, Rolle spielende Spiele zu machen, die JavaScript als eine scripting Sprache verwenden.
  • Das Fachwerk des Wiederzeichners von Trickfilmen der offenen Quelle erlaubt, das 2. Elfe-basierte Spielverwenden JavaScript und XML zu entwickeln.
  • Methabot ist ein Webkettenfahrzeug, das JavaScript als scripting Sprache für die Gewohnheit filetype parsers und Datenförderung mit E4X verwendet.
  • Der Einheitsspielmotor unterstützt modifizierten JavaScript für scripting (zusätzlich zu C# und Buhruf) über den Mono abspielbaren.
  • DX Studio (3D-Motor) verwendet die Durchführung von SpiderMonkey von JavaScript für das Spiel und die Simulierungslogik.
  • Maxwell Render (Software machend), stellt gestützten scripting Motor eines ECMA Standards für die Aufgabe-Automation zur Verfügung.
  • Die Google Apps Schrift in Google Spreadsheets und Google Seiten erlaubt Benutzern, kundenspezifische Formeln zu schaffen, wiederholende Aufgaben zu automatisieren und auch mit anderen Produkten von Google wie Gmail aufeinander zu wirken.
  • Viele IRC Kunden, wie ChatZilla oder XChat, verwenden JavaScript für ihre scripting geistigen Anlagen.

Motor von Scripting

  • Die aktive Scripting Technologie des Microsofts unterstützt JScript als eine scripting Sprache.
  • Die javanische Programmiersprache, in der Version SE 6 (JDK 1.6), hat das Paket einschließlich einer auf dem Mozilla Kies gestützten Durchführung von JavaScript eingeführt. So können javanische Anwendungen Schriften veranstalten, die auf die Variablen der Anwendung zugreifen und Gegenstände, viel wie WWW-Browser Schriften veranstalten, die auf Document Object Model (DOM) des Browsers für einen webpage zugreifen.
  • Der Qt C ++ Werkzeug schließt ein Modul ein, um JavaScript zu interpretieren, der Javas Paket analog ist.
  • JSDB (JavaScript für Datenbanken) ist eine offene Quelle Schale von JavaScript für Windows, Mac OS X, Linux und Unix, der den Mozilla Motor von JavaScript mit Datei, Datenbank, E-Mail und Netzgegenständen erweitert.
  • jslibs ist eine offene Quelle Schale von JavaScript für Windows und Linux, der den Mozilla Motor von JavaScript erweitert. Es ist in der Lage, Funktionen in allgemein verwendeten Bibliotheken wie NSPR, SQLite, libTomCrypt, OpenGL, OpenAL und librsvg zu nennen.
  • Späte Nacht JavaScript der Software ist OSA (auch bekannt als JavaScript für OSA oder JSOSA) eine freeware Alternative zu AppleScript für Mac OS X. Es basiert auf Mozilla 1.5 Durchführung von JavaScript, mit der Hinzufügung eines Gegenstands für die Wechselwirkung mit dem Betriebssystem und den Drittanwendungen.

Anwendungsplattform

  • ActionScript, die in Adobe Flash verwendete Programmiersprache, ist eine andere Durchführung des ECMAScript Standards.
  • Die Mozilla Plattform, die Firefox, Thunderbird und einigen anderen WWW-Browsern unterliegt, verwendet JavaScript, um die grafische Benutzerschnittstelle (GUI) seiner verschiedenen Produkte durchzuführen.
  • Adobe Integrated Runtime ist eine Durchlaufzeit von JavaScript, die Entwicklern erlaubt, Tischanwendungen zu schaffen.
  • myNFC.org ist gestütztes Fachwerk von JavaScript, das Entwicklern erlaubt, Anwendungen für kluge Kopfhörer zu schaffen.
  • webOS verwendet die Durchführung von WebKit von JavaScript in seinem SDK, um Entwicklern zu erlauben, eigenständige Anwendungen allein in JavaScript zu schaffen.
  • Auf die Quer-Anwendung von AutoShell von CA, Inc. scripting Umgebung wird gebaut JavaScript/SpiderMonkey mit dem Vorverarbeiter wie Erweiterungen für Befehl-Definitionen und kundenspezifische Klassen für das verschiedene System hat Aufgaben wie Datei i/o, Operationssystembefehl-Beschwörung und Wiederrichtung und COM scripting verbunden.
  • ZWERG Shell, die Schale für die Tischumgebung. Der Samen, Gjs (vom Zwerg), und Kjsembed (von KDE) Pakete wird gerichtet, um diese Bedürfnisse zu verwerten.
  • Qt Preiserhöhungssprache von Quick (QML) verwendet JavaScript für die Anwendungslogik, und die Aussagesyntax ist JavaScript ähnlich. QML ist seit Qt 4.7 verfügbar gewesen.

Entwicklungswerkzeuge

Innerhalb von JavaScript wird der Zugang zu einem Testhilfeprogramm unschätzbar, wenn er große, nichttriviale Programme entwickelt. Weil es Durchführungsunterschiede zwischen den verschiedenen Browsern geben kann (besonders innerhalb des Dokumentengegenstand-Modells), ist es nützlich, Zugang zu einem Testhilfeprogramm für jeden der Browser zu haben, die eine Webanwendung ins Visier nimmt.

Schrift-Testhilfeprogramme sind für Internet Explorer, Firefox, Safari, Google Chrom und Oper verfügbar.

Drei Testhilfeprogramme sind für Internet Explorer verfügbar: Microsoft Visual Studio ist der reichste der drei, die nah von Microsoft Script Editor (ein Bestandteil von Microsoft Office), und schließlich dem freien Microsoft Script Debugger gefolgt sind, der viel grundlegender ist als die anderen zwei. Der freie Microsoft Visual Web Developer Express stellt eine beschränkte Version von JavaScript zur Verfügung, bei Funktionalität in Microsoft Visual Studio die Fehler beseitigend. Internet Explorer hat Entwickler-Werkzeuge seit der Version 8 (erreicht durch das Drücken des F12 Schlüssels) eingeschlossen.

Bei

Webanwendungen innerhalb von Firefox kann mit der Brandstifter-Erweiterung oder dem älteren Testhilfeprogramm von Venkman die Fehler beseitigt werden. Firefox hat auch eine einfachere eingebaute Fehlerkonsole, die loggt und JavaScript bewertet. Es loggt auch CSS Fehler und Warnungen.

Oper schließt eine Reihe von Werkzeugen genannt die Libelle ein.

Der Webinspektor von WebKit schließt ein Testhilfeprogramm von JavaScript ein, das in die Safari zusammen mit einer modifizierten Version in Google Chrom verwendet ist.

Etwas Beseitigen-Hilfe wird selbst in JavaScript geschrieben und gebaut, um im Web zu laufen. Ein Beispiel ist das Programm JSLint, der von Douglas Crockford, zurzeit älterem Architekten von JavaScript an Yahoo entwickelt ist! wer umfassend über die Sprache geschrieben hat. JSLint scannt Code von JavaScript für die Übereinstimmung zu einer Reihe von Standards und Richtlinien. Webentwicklung bookmarklets und Brandstifter Lite stellen Schwankungen auf der Idee vom Quer-Browser Konsole von JavaScript zur Verfügung.

MiniME ist eine offene Quelle JavaScript minifier, obfuscator, und codeüberprüfendes Werkzeug für die.NET Plattform.

Hübscher Diff ist ein algorithmisches diff Werkzeug, das in JavaScript geschrieben ist, um sich zu vergleichen, Leerraum hat JavaScript und mehrere andere Sprachen zu menschlichen lesbaren Formen des ähnlichen Codes zusammengepresst.

Versionen

Der folgende Tisch basiert auf einem Geschichtskompilationsforum-Posten, JQuery Autor-Blog-Posten und der JScript Versionsinformation des Microsofts webpage.

Zusammenhängende Sprachen und Eigenschaften

JSON oder Gegenstand-Notation von JavaScript, ist ein Mehrzweckdatenaustausch-Format, das als eine Teilmenge der wörtlichen Syntax von JavaScript definiert wird.

jQuery und Prototyp sind populäre Bibliotheken von JavaScript, die entworfen sind, um DOM-orientiertes Kundenseite-HTML scripting zu vereinfachen.

Browser von Mozilla unterstützen zurzeit LiveConnect, eine Eigenschaft, die JavaScript und Java erlaubt, im Web miteinander zu verkehren. Jedoch steht die Mozilla-spezifische Unterstützung für LiveConnect auf dem Plan, um in der Zukunft für das Verzichten auf LiveConnect stufenweise eingestellt zu werden, der über NPAPI nach Java 1.6 + Einfügefunktion (noch nicht unterstützt auf Mac) behandelt. Die meisten Browser-Schauwerkzeuge, wie Brandstifter in Firefox, schließen Dolmetscher von JavaScript ein, die dem DOM der sichtbaren Seite folgen können.

Verwenden Sie als eine Zwischensprache

Da JavaScript normalerweise die am weitesten unterstützte Programmiersprache ist, die Sie innerhalb von WWW-Browsern führen können, ist es eine Zwischensprache für andere Sprachen geworden, um ins Visier zu nehmen. Das hat Häfen von vorhandenen Sprachen und die Entwicklung von neuen eingeschlossen. Einige von diesen schließen ein:

  • Ziel-J, eine Obermenge von JavaScript, der zu normalem JavaScript kompiliert. Es fügt traditionelles Erbe und Smalltalk/Objective-C Stil dynamische Absendung und das fakultative pseudostatische Schreiben zu JavaScript hinzu.
  • Processing.js, ein Hafen von JavaScript der Verarbeitung, hat eine Programmiersprache vorgehabt, Vergegenwärtigungen, Images und interaktiven Inhalt zu schreiben. Es erlaubt WWW-Browsern, Zeichentrickfilme, Sehanwendungen, Spiele und anderen grafischen reichen Inhalt ohne das Bedürfnis nach Java applet oder Steck-Blitz zu zeigen.
  • CoffeeScript, eine abwechselnde Syntax für JavaScript hat vorgehabt, kürzere und lesbare und beitragende Eigenschaften wie Reihe-Verständnisse und das Muster-Zusammenbringen zu sein. Wie Ziel-J kompiliert es zu JavaScript. Rubin und Pythonschlange sind als einflussreich auf die Syntax von CoffeeScript zitiert worden.
  • Quby, eine einem Rubin ähnliche mit dem Sand in Schachteln gepackte Eigentumssprache durch PlayMyCode verwendet, um Browser-Spiele zu bauen.
  • OMeta, eine funktionelle Sprache, die das Muster-Zusammenbringen zeigt.
  • Phype, eine offene Quelle PHP zum Bearbeiter von JavaScript.
  • TIScript, eine Obermenge von JavaScript, der Klassen, namespaces, und Lambda-Ausdrücke hinzufügt.
  • ClojureScript, Clojure zum Bearbeiter von JavaScript, der mit der fortgeschrittenen Kompilationsweise des Google Verschluss-Optimierungsbearbeiters vereinbar ist.
  • Parenscript, eine Allgemeine Lispeln-Bibliothek, die in JavaScript sowohl gut umschriebenen Allgemeinen Lispeln-Code als auch JavaScript gemacht als "inlined" S-Ausdrücke im allgemeinen Lispeln-Quellcode übersetzen kann.
  • Py2JS, eine Teilmenge der Pythonschlange
  • Wurfpfeil wird von Google unterstützt, und kompiliert in seine eigene Muttersprache zusätzlich zu Javascript hat einen gestützt

JavaScript und Java

Ein häufiger Irrtum ist, dass JavaScript ähnlich oder nach Java nah verwandt ist. Es ist wahr, dass beide eine C ähnliche Syntax, die c Sprache haben, die ihre unmittelbarste Sprache des gemeinsamen Ahnen ist. Sie sind beide, normalerweise sandboxed (wenn verwendet, innerhalb eines Browsers) objektorientiert, und werden in Kundenseite-Webanwendungen weit verwendet. Außerdem wurde JavaScript mit Javas Syntax und Standardbibliothek im Sinn entworfen. Insbesondere alle javanischen Schlüsselwörter wurden in ursprünglichem JavaScript vorbestellt, die Standardbibliothek von JavaScript folgt Javas Namengeben-Vereinbarung, und die Mathe- und Datum-Gegenstände von JavaScript basieren auf Klassen von Java 1.0.

Jedoch enden die Ähnlichkeiten dort. Java hat das statische Schreiben; das Schreiben von JavaScript ist dynamisch (das Meinen, dass eine Variable einen Gegenstand jedes Typs halten kann und nicht eingeschränkt werden kann). JavaScript wird schwach getippt (usw.), während Java stärker getippt wird. Java wird von kompiliertem bytecode geladen; JavaScript wird als menschlich-lesbarer Quellcode geladen. Javas Gegenstände werden klassengestützt; JavaScript sind Prototyp-basiert. JavaScript hat auch viele funktionelle auf der Schema-Sprache gestützte Eigenschaften.

Siehe auch

  • Ajax, der - Asynchroner JavaScript und XML (Ajax) (programmiert), eine Gruppe von Webentwicklungsmethoden hat gepflegt, interaktive Webanwendungen zu schaffen
  • Der Vergleich der mit Sitz in JavaScript Quelle codiert Redakteure
  • Vergleich des Fachwerks von JavaScript
  • Document Object Model (DOM) - eine Tagung, um zu vertreten und mit Gegenständen im HTML, XHTML und den XML Dokumenten aufeinander zu wirken
  • Dynamisches HTML - ein Überbegriff für eine Sammlung von Technologien hat gepflegt, interaktive Websites zu schaffen
  • ECMAScript - JavaScript ist eine ECMAScript Durchführung
  • Motor von JavaScript - eine Spezialcomputersoftware, die interpretiert und JavaScript durchführt
  • Gegenstand-Notation von JavaScript (JSON) - Leichtgewichtler textbasierter offener für menschlich-lesbare Daten entworfener Standard wechselt aus
  • Syntax von JavaScript
  • Unauffälliger JavaScript - eine allgemeine Annäherung an den Gebrauch von JavaScript in Webseiten
  • Wurfpfeil - ein Ersatz für JavaScript
  • Progressive Erhöhung

Weiterführende Literatur

Links


Ephesus / Elbing (Begriffserklärung)
Impressum & Datenschutz