ECMAScript-Einführung Crockford: JavaScript is the virtual machine of the Internet.

Einführende Seite en.wikipedia: ECMAScript , Link zur Norm ECMAScript-262 (pdf 2.5MB) .

JavaScript (Historie) Wie entstand ECMAScript aus JavaScript?

JavaScript (Historie), Wie entstand ECMAScript aus JavaScript?

Brendan Eich gilt als JavaScript-Entwickler. JavaScript entnimmt wesentliche Ideen aus den Sprachen Java, Scheme, Self.

JavaScript (vorher LiveScript) ist ein Markenname von Sun Microsystems, heute Oracle.

ECMAScript ging aus proprietären JavaScript-Spezifikationen hervor. Proprietär kommt vom lateinischen proprietas und meint etwa Eigentümlichkeit, Eigentum, Closed Source, umfassenden Vorbehalt des Urhebers. JavaScript wurde ab 1998 zu einem internationalen Standard ECMA-262. Dadurch wurden die proprietären Spezifikationen, wie z.B. JavaScript (Netscape) und JScript (Microsoft), usw. vereinheitlicht und genormt.

 ECMAScript
1th Edition: NOT AVAILABLE
2th Edition: August 1998
3th Edition: December 1999
4th Edition: NOT EXISTING
5th Edition: December 2009 

Derzeit wird die ECMAScript Language Specificationen ECMAScript-262 (pdf 2.5MB) verwendet.   Versionen- Korrespondenzen



Einige Jahreszahlen zur JavaScript-Historie Historisches ...

Einige Jahreszahlen zur JavaScript-Historie

JavaScript-Historie
1995 Offizielle Verkündigung von JavaScript durch Sun und Netscape (früher LiveScript). Netscape Navigator 2.0-Vorversion (LiveWire, LivePayment, LiveAudio, LiveScript Brendan Eich).
1996 Netscape stellt den Enterprise Server 2.0 vor, der erste Server, der JavaScript beherrscht. Navigator 3.0 und Netscape Enterprise Server 2.0 (LiveConnect-Schnittstelle für Kommunikation zwischen JavaScript, Java und Plugins). Netscape und ECMA wollen JavaScript standardisieren
1996 Microsoft Internet Explorer 3 (MSIE3, JScript, VBScript)
1997 Microsoft verknüpft HTML, Scripting and Style Sheets zu DHTML.
1997 Communicator (Navigator 4.0, mit JavaScript 1.2)
1997 Die European Computer Manufacturers Association (ECMA) veröffentlicht ECMAScript als standardisierte Version von JavaScript und reicht den Standard bei der ISO ein. Draft International Standard ECMA-262: ECMAScript (entspricht JavaScript)
1997 W3C Note zu XSL (ECMAScript wird Scriptingsprache für XSL und XML)
1997 MSIE 4 (JavaScript 1.1, DOM)
1998 VRML97 wird ISO-Standard (ECMAScript)
1998 Adobe-PDF-Webformulare dürfen JavaScript enthalten
1998 Navigator-Source-Code-Freigabe (Mozilla)
1998 Netscape zeigt, dass JavaScript in 3,5 Millionen Webseiten eingesetzt wird
1998 ECMAScript wird Norm ISO/IEC 16262
1998 Communicator 4.5
1998 Netscape JavaScript 1.4 (kompatibel mit ECMA-262, Exception handling, New operators in and instanceof, Changes to LiveConnect, Changes to the Function object)
1999 Standard ECMA-262, Language Specification,3th Edition: December 1999
2009 Standard ECMA-262, Language Specification, 5th Edition: December 1999


ECMAScript (Übersicht) ECMAScript im Browser

ECMAScript (Übersicht), ECMAScript im Browser

Crockford: JavaScript ist die erste Lambda-Sprache, die populär geworden ist.

ECMAScript definiert eingebaute Objekte (built-in objects), die global sind (Object object, Function object, Array object, String object, Boolean object, Number object, Math object, Date object, RegExp object, JSON object, Error objects). ECMAScript definiert eingebaute Operatoren (unary operations, multiplicative operators, additive operators, bitwise shift operators, relational operators, equality operators, binary bitwise operators, binary logical operators, assignment operators, comma operator).
Link zur Norm ECMAScript-262 (pdf 2.5MB)

ECMAScript wird im allgemeinen Sprachgebrauch auch JavaScript genannt. ECMAScript kann Objekte erstellen und verwenden. Mit ECMAScript können (Browser-, DOM- und User-) Objekte benutzt und Formulare, Buttons, HTML-Text erzeugt und manipuliert werden. Interaktionen mit der Tastatur und Maus sind möglich.

ECMAScript 262 beschreibt einen standardisierten JavaScript-Sprachkern. ECMAScript ist eine schlanke, dynamisch typisierte, objektorientierte, aber klassenlose Skriptsprache. Auf der Basis von Prototypen (und weiterem) sind alle objektorientierten Programmierparadigmen möglich. Mit ECMAScript kann objektorientiert und auch prozedural und auch rein funktional programmiert werden.

  1. Die objektorientierte Programmiersprache Java ist von der objektbasierten JavaScript-Sprache zu unterscheiden.
  2. ECMAScript (JavaScript) ist zwar syntaktisch an Java angelehnt und entspricht einer case-sensitiven, objektbasierten Sprache.
  3. Die Script-Sprache ist hinsichtlich der Typisierung (schwache Typprüfung, loosely-typed-language) hat aber die Möglichkeit der typeof()-Typprüfung
  4. ECMAScript wird meist clientseitig verwendet, benötigt ein zugehöriges Anzeige-Programm (WWW-Browser, ggf. auch Webserver), das den Script-Code interpretiert
  5. Im Browser sind schreibende Festplattenzugriffe (Arbeitsspeicherverwaltung, Dateioperationen) verboten
  6. Script-Code verwendet "garbage collection"
  7. Script-Code kann in den Header und Body-Tag einer HTML-Datei stehen oder aus separaten .js-Dateien importiert werden
  8. Script-Code kann in eine HTML-Page geschrieben werden und dient vielfach der dynamischen Seitengestaltung.


ECMAScript (Einsatzgebiete) Wo wird ECMAScript verwendet?

ECMAScript (Einsatzgebiete)

ECMAScript (siehe ECMAScript-262-Standard (pdf 2.5MB) ) wird in Millionen von Webseiten verwendet (Browser-Voreinstellung).

ECMAScript



ECMAScript (Cloud, Zusammenhänge) historische Zusammenhänge von ECMAScript

ECMAScript (Cloud, Zusammenhänge)

Das folgende Bild stammt von John Resig (ejohn.org, GPL v2) und zeigt grafisch die vielschichtigen, wechselseitige Abhängigkeiten von JavaScript, Programmiersprachen, Firmen und Browsern.

Bildgröße 608 x 456
Zusammenhänge von ECMAScript

Bildgröße 981 x 736
Zusammenhänge von ECMAScript


Sicherheit im Internet Gibt es ein sicheres Internet?

Sicherheit im Internet

Hauptquellen der "Schadware" ( Viren, Trojanische Programme, Würmer, Rootkits, usw.; Beschädigung der Dateien, unerlaubter Zugang zum System, Verletzung seiner Integrität, Diebstahl von Informationen und der Dateien ) kommen aus Internet und E-Mail.

Vielfach werden für ("return into libc")-Dateninjektions-Attacken Shellcodes in Pufferüberläufe eingeschleust (siehe z.B. de.wikipedia: Webanwendung , wikipedia: Shellcode Beispiele (technisch): projectshellcode , win32-shellcoding , de.wikipedia: IT-Sicherheit Nach der Kaspersky-Lab-Malware-Statistik entfallen 2009 auf die Top 20 der Schadprogramme im Internet 27.443.757 erfassten Vorfälle.

Name Anzahl der Angriffe %-Anteil
1 HEUR:Trojan.Script.Iframer 9858304 13,39
2 Trojan-Downloader.JS.Gumblar.x 2940448 3,99
3 not-a-virus:AdWare.Win32.Boran.z 2875110 3,91
4 HEUR:Exploit.Script.Generic 2571443 3,49
5 HEUR:Trojan-Downloader.Script.Generic 1512262 2,05
6 HEUR:Trojan.Win32.Generic 1396496 1,9
7 Worm.VBS.Autorun.hf 1131293 1,54
8 Trojan-Downloader.HTML.IFrame.sz 935231 1,27
9 HEUR:Exploit.Script.Generic 752690 1,02
10 Trojan.JS.Redirector.l 705627 0,96
11 Packed.JS.Agent.bd 546184 0,74
12 Trojan-Clicker.HTML.Agent.aq 379872 0,52
13 HEUR:Trojan-Downloader.Win32.Generic 322166 0,44
14 Trojan.JS.Agent.aat 271448 0,37
15 Trojan-Downloader.Win32.Small.aacq 265172 0,36
16 Trojan-Clicker.HTML.IFrame.ani 224657 0,31
17 Trojan-Clicker.JS.Iframe.be 216738 0,3
18 Trojan-Downloader.JS.Zapchast.m 193130 0,27
19 Trojan.JS.Iframe.ez 175401 0,24
20 not-a-virus:AdWare.Win32.GamezTar.a 170085 0,23
TOP 20 insgesamt 27443757 37,3


Welche Programme (fast nur Trojaner) nutzen welche Ports (nach chip.de von 2002)?

Portliste
Port/System-Ports Programm/Name
0 ICMP Click attack
9 UDP discard
15 netstat
19 chargen
21 TCP ftp
22 SSH
23 TCP telnetd
25 TCP smtp
37 Time
39 rlp
53 TCP Domain
67 bootp
69 TFTP
79 fingerk
80/8080 http
80/8080/5580 military http
87 link
110 pop3
111 SUN RPC
113 identd
119 nntp
129 TCP PGP (nuke) Password 
    Generator Protocol
137 TCP Netbios name (nuke)
138 TCP Netbios datagram (nuke)
139 TCP Netbios session (nuke)
144 newsk
161 SNMP
445 Microsoft-DS
512 execk
513 login
515 pkill
517 ktalk
518 ntalk
533 netwall
560 rmontior
561 montior
750 kerberos

1000-40000 Icq Ports 
  (Port is ramdomly choosen)
2 Death
21 Doly Trojan 1.1 , Back Construction, 
   Blade Runner , Fore , FTP trojan, 
   Invisible FTP, Larva, MBT, Motiv, 
   Net Administrator, 
   Senna Spy FTP Server, WebEx, WinCrash
23 Tiny Telnet Server , Truva Atl
25 Antigen , Aji , Email Password Sender,
   Gip , Happy 99 , I Love You , Kuang 2, 
   Magic Horse, Moscow Email Trojan, 
   Naebi, NewApt, ProMail trojan, 
   Shtrilitz, Stealth, Tapiras, 
   Terminator, WinPC, WinSpy
31 Agent 31, Master's Paradise, 
   Hacker's Paradise
41 Deep Throat
48 DRAT
50 DRAT
58 DM Setup
59 DM Setup
79 Firehotcker
80 Executor, Back End, Hooker, RingZero
99 Hidden Port 2.0
110 ProMail Trojan
113 Invisible Identd Deamon , Kazimas
119 Happy 99
121 BO , Jammer KillahV
123 Net Controller
133 Farnaz, 146 - Infector
146 Infector
170 A-trojan
421 TCP Wrappers
456 Hackers Paradise
531 Rasmin
555 NeTadmin , Stealth Spy , Phase 0,
    Ini-Killer
606 Secret Service
666 Attack FTP, Satanz Backdoor, 
    Back Construction, NokNok, 
    Cain & Abel, ServeU, Shadow Phyre
667 SniperNet
669 DP Trojan
692 GayOL
777 AimSpy
808 WinHole
911 Dark Shadow
999 DeepThroat , WinSatan
1000 Der Spaeher 3
1001 Silencer, WebEx, Le Guardien, 
     Silencer
1010 Doly trojan v1.35
1011 Doly trojan
1012 Doly trojan
1015 Doly trojan v1.5
1016 Doly Trojan 1.6
1020 Vampire
1024 Netspy, Bla1.1
1027 ICQ
1029 ICQ
1032 ICQ
1033 Netspy
1042 Bla 1.1
1045 Rasmin
1050 Mini Command 1.2
1080 Firewall Port, 
     Wingate (Socks-Proxy)
1081 WinHole
1082 WinHole
1083 WinHole
1090 Xtreme
1095 RAT
1097 RAT
1098 RAT
1099 BFevolution, RAT
1170 Psyber Stream Server , 
     Streaming Audio Trojan , Voice
1200 NoBackO
1201 NoBackO
1207 SoftWar
1212 Kaos
1225 Scarab
1234 Ultors Trojan
1243 SubSeven, BackDoor-G, Apocalypse, 
     Tiles
1245 VooDoo Doll , GabanBus, NetBus
1255 Scarab
1256 Project nEXT
1269 Maverick's Matrix
1313 NETrojan
1338 Millenium Worm
1349 Back Orifice DLL
1492 FTP99CMP
1509 Psyber Streaming Server
1524 Trinoo
1600 Shivka-Burka
1777 Scarab
1807 SpySender
1966 FakeFTP
1969 OpC BO
1981 Shockrave
1999 BackDoor , Transcout 1.1 + 1.2
2000 Der Spaeher 3, Transscout, 
     Insane Network 4
2001 Trojan Cow, DerSpaeher 3, 
     TransScout
2002 TransScout
2003 TransScout
2004 TransScout
2005 TransScout
2023 Pass Ripper
2080 WinHole
2115 Bugs
2140 Deep Throat , The Invasor
2155 Illusion Mailer
2283 HVL Rat5
2300 Xplorer
2565 Striker
2583 WinCrash , Wincrash2
2600 Digital RootBeer
2716 The Prayer
2773 SubSeven
2801 Phineas Phucker
2989 Rat
3000 Remote Shutdown
3024 WinCrash No
3128 RingZero
3129 Master's Paradise
3150 Deep Throat (TCP & UDP), 
     The Invasor
3389 Win 2k Remote Terminal Service
3456 Teror Trojan
3459 Eclipse 2000 , Sanctuary
3700 Portal of Doom
3791 Total Eclypse 1.0
3801 Eclypse
4000 Skydance
4092 WinCrash
4242 Virtual hacking Machine
4321 Schoolbus 1.0 , BoBo
4444 Prosiak , Swift remote
4567 FileNail
4590 ICQTrojan
4950 ICQTrojan
5000 Sockets de Troie , Socket23,
     Bubbel , Back Door Setup
5001 Sockets de Troie 1.x , 
     Back Door Setup
5010 Solo
5011 OOTLT + OOTLT Cart
5031 Net Metropolitan 1.0
5032 Net Metropolitan 1.04
5321 Firehotcker
5343 wCrat
5400 BackConstruction1.2, Blade Runner
5400 Blade Runner, Back Construction
5401 Blade Runner 1.x, Back Construction
5402 Blade Runner 2.x, Back Construction
5512 Illusion Mailer
5521 Illusion Mailer
5550 Xtcp 2.00 + 2.01
5555 ServeMe
5556 BO Facil
5557 BO Facil
5569 Robo-Hack
5631 PC-Anywhere
5637 PC Crasher
5638 PC Crasher
5714 WinCrash
5741 WinCrash
5742 Wincrash
5882 Y3K RAT
5888 Y3K RAT
6000 The tHing 1.6
6006 The tHing
6272 Secret Service
6400 The tHing
6666 TCPShell.c
6667 Schedule Agent
6669 Vampire, HostControl 1.0
6670 DeepThroat 1,2,3.x, 
     BackWeb Server, 
     WinNuke eXtreame
6671 DeepThroat 2.0 & 3.0
6711 Sub Seven
6712 Sub Seven, Funny Trojan
6713 Sub Seven
6723 Mstream
6771 DeepThroat
6776 Sub Seven, 2000 Cracks, 
     BackDoor-G
6838 Mstream
6883 DeltaSource (DarkStar)
6912 Shitheep
6939 Indoctrination
6969 GateCrasher, Priority, 
      IRC 3, NetController
6970 Gate Crasher
7000 Remote Grab, Kazimas, SubSeven
7001 Freak 88
7215 SubSeven
7300 NetMonitor
7301 NetMonitor 1.x
7306 NetMonitor 2.x
7307 NetMonitor 3.x
7308 NetMonitor 4.x
7424 Host Control
7789 ICQKiller , Back Door Setup
7983 Mstream
8080 RingZero
8787 Back Orifice 2000
8879 Hack Office Armageddon
8897 BacHack
8988 BacHack
8989 Rcon
9000 Netministrator
9325 Mstream
9400 InCommand 1.0+1.1+1.2+1.3+1.4
9872 Portal of Doom
9873 Portal of Doom 1.x
9874 Portal of Doom 2.x
9875 Portal of Doom 3.x
9876 Cyber Attacker , RUX
9878 TransScout
9989 iNi-Killer
9999 ThePrayer 1.x
10067 Portal of Doom 4.x
10101 BrainSpy
10167 Portal of Doom 5.x
10520 Acid Shivers
10528 Host Control
10607 Coma , Danny
10666 Ambush
11000 Senna Spy Trojans
11050 Host Control
11051 Host Control
11223 Progenic trojan , Secret Agent
12076 Gjamer
12223 Hack´99 KeyLogger
12345 Netbus, Ultor's Telnet Trojan, 
      GabanBus, My Pics, 
      Pie Bill Gates, 
      Whack Job, X-bill
12346 NetBus 1.x , GabanBus , X-bill
12349 BioNet
12361 Whack-a-mole
12362 Whack-a-mole 1.x
12623 DUN Control
12624 Buttman
12631 WhackJob
12701 Eclipse 2000
12754 Mstream
13000 Senna Spy
13010 Hacker Brazil
13700 Kuang2 The Virus
14141 BO2K-Plugin BO_Peep , Hijack
15092 Host Control
15104 Mstream
15151 BO2K-Plugin , BO_Peep-VidStream
16484 Mosucker
16660 Stacheldracht
16772 ICQ Revenge
16969 Priority
17166 Mosaic
17300 Kuang2 theVirus
17777 Nephron
18753 Shaft
19864 ICQ Revenge
20000 Millennium
20001 Millennium
20002 AcidkoR
20034 NetBus Pro , NetBus 2 Pro , 
      NetRex , Whack Job
20203 Chupacabra , Logged!
20331 Bla
20432 Shaft
21544 GirlFriend , Schwindler 1.82 , 
      Kidterror , WinSp00fer
21554 GirlFriend
22222 Prosiak 0.47
23023 Logged
23432 Asylium Family
23456 Evil FTP, Ugly FTP, WhackJob
23476 Donald Dick
23477 Donald Dick
26274 Delta Source
26681 Spy Voice
27374 Sub7 2.1
27444 Trinoo
27573 SubSeven
27665 Trinoo
29104 Host Control
29891 The Unexplained
30001 TerrOr32
30029 AOLTrojan1.1
30100 NetSphere
30101 NetSphere
30102 NetSphere
30103 NetSphere
30129 Masters Paradise
30133 Netsphere Final
30303 Sockets de Troie
30947 Intruse Pack 1.27b
30999 Kuang
31335 Trinoo
31336 Bo Whack , ButtFunnel
31337 Back Orifice, Netpatch, DeepBO, 
      Freak, Baron Night
31338 Back Orifice, DeepBO, NetSpy, 
      ButtFunnel
31339 NetSpy DK
31666 BOWhack
31785 Hack'a'Tack
31787 Hack'a'Tack
31788 Hack'a'Tack
31789 Hack'a'Tack
31791 Hack'a'Tack
32100 Peanut Brittle, Project nEXT
32418 Acid Battery 1.0
33333 Prosiak , Blakharaz
33577 PsychWard
33777 PsychWard
33911 Trojan Spirit 2001 a
34324 BigGluck, Tiny Telnet Server
34555 Trinoo (Windows)
35555 Trinoo (Windows)
37651 YAT
40412 The Spy
40421 MastersParadise
40422 Masters Paradise 1.x
40423 Masters Paradise 2.x
40425 Masters Paradise
40426 Masters Paradise 3.x
41666 Remote Boot
43210 Schoolbus 1.6 & 2.0
44444 Prosiak, 
      Stealthy TCP IO(BO2K Plugin)
47252 Delta Source
47262 Delta Source
49301 Online Keylogger
50505 Sockets de Troie
50766 Fore, Schwindler
51996 Cafeini
52317 Acid Battery 2000
53001 Remote Windows Shutdown
54283 SubSeven
54320 Back Orifice 2000
54321 Schoolbus 1.6 & 2.0, Back Orifice
57341 NetRaider
58339 ButtFunnel
60000 Deep Throat 2.0 & 3.0
60068 Xzip 6000068
60411 Connection
61348 Bunker-Hill
61466 Telecommando
61603 Bunker-Hill
63485 Bunker-Hill
65000 Devil 1.03, Stacheldracht
65432 The Traitor
65535 RC


ECMAScript-Environment (Sicherheit) Wie sicher ist ECMAScript?

ECMAScript-Environment (Sicherheit)

Crockford: JavaScript is the virtual machine of the Internet.

JavaScript braucht eine ausführende Umgebung (Environment, Browser) das den JavaScript-Code interpretiert, d.h. JavaScript im Browser läuft wie in einer "Sandbox", die die Programmiersprache in eine Art Sicherheitskäfig eingesperrt. Dadurch wird verhindert werden, dass ECMAScript-Code beim Surfen auf dem Rechner von Anwendern (Client-Rechnern) Schaden verursachen können. Der Sicherheitskäfig verhindert gefährliche (Schreib-) Zugriffe aus das Dateisystem. ECMAScript kann (i.a.) im Browser deaktiviert werden.

Achtung!
Der User kann (i.a.) auch Sicherheitseinstellungen setzen, die Beschränkungen bedingt umgehen (Upates, ActiveX, rein lokale Browser-Applikationen, RPC, Intranet).

Unter Windows kann ein javaScriptFile.js auch ohne Browser von der Console aus (WSH = Windows Scripting Host; mit Hilfe von cscript.exe oder wscript.exe) ausgeführt werden. Dadurch sind Admistrationen und Zugriffe auf das Dateisystem von Windows möglich. Aus JavaScript können keine Nativ-Applikationen erzeugen werden.



Sicherheit und ECMAScript Ist ECMAScript sicher?

Ist ECMAScript sicher?

Die de.wikipedia: Netzwerksicherheit hat viele Ebenen und Fasetten.

Client-Server-Webanwendung (Bildquelle: wikipedia)

Eine Domain (auch Domäne) ist ein zusammenhängender Teilbereich des hierarchischen Domain Name System (DNS). Ein "Fully Qualified Domain Name" (FQDN z. B. www.example.com.) ist oft Bestandteil von URLs und kann durch das DNS in eine IP-Adresse aufgelöst werden. Eine .de-Domain ein rechtlich geschützter Vermögenswert und „eigentumsähnlich“. Cross-Site Scripting: Eine schwache Cross-Site Authentication kann Computersicherheitslücken im Cross-Site Scripting (XSS) ausnutzen, um sich in einen vertrauenswürdigen Kontext einzuschleichen und zu eigenen Zwecken benutzen (Identitätsdiebstahl, sensible Benutzerdaten stehlen). Es gibt reflexive (reflected, z.B. zurück geliefert bei der jeweiligen Webseite-Generierung), persistente (persistent) und DOM-basierte Cross-Site-Scripting-Angriffe.

Beispiel:
http://example.com/my.htm?arg=<script type="text/javascript">alert("XSS")</script>

Es gibt Header-Injection, Computersicherheit, Webanwendung, SQL-Injection, Session Hijacking, Cross-domain Ajax with Cross-Origin Resource Sharing, Cross-Origin Resource Sharing (CORS). Mögliche CSS-Attack-Gefahren werden hier beschrieben CSS Attacks(.pdf) , Michal Zalewski ,
de.wikipedia: Cross-Site-Scripting , Cross-Site Cooking , Cross-Site Request Forgery , Cross-Site Tracing , Cross-Zone Scripting

Method of performing XMLHttpRequests across domains

 IEFirefoxSafariChromeOpera iOS SafariOpera MiniOpera MobileAndroid Browse
Three versions back5.5: Unknown 2.0: Unknown 3.1: Unknown 6.0: Yes 10.0-10.1: Unknown      
Two versions back6.0: Unknown 3.0: Unknown 3.2: Unknown 7.0: Yes 10.5: Unknown 3.2: Yes    2.1: Yes
Previous version7.0: Unknown 3.5: Yes 4.0: Yes 8.0: Yes 10.6: Unknown 4.0-4.1: Yes    2.2: Yes
Current8.0: Partial 3.6: Yes 5.0: Yes 9.0: Yes 11.0: Unknown 4.2: Yes 5.0: Unknown 10.0: Unknown 2.3: Yes
Near Future (early 2011)8.0: Partial 4.0: Yes 5.0: Yes 10.0: Yes 11.1: Unknown      
Future (mid/late 2011)9.0: Partial 5.0: Yes 6.0: Yes 11.0: Yes 11.1: Unknown       

Hinweise: en.wikipedia: Cross-Origin_Resource_Sharing , w3.org: CORS, Resources: Mozilla Hacks blog post Alternative implementation by IE8 Demo and script with cross-browser support



ECMAScript (Einsatz, allgemein) Wie wird ECMAScript verwendet?

ECMAScript (Einsatz, allgemein)

ECMAScript (=JavaScript) kann Objekte erstellen und verwenden. Mit JavaScript können (Browser-) Objekte benutzt werden. Mit JavaScript können Formulare, Buttons, HTML-Text erzeugt und manipuliert werden. Interaktionen mit der Tastatur und Maus sind möglich.

ECMAScript hat eingebaute Objekte und es kann objektorientiert programmiert werden. Funktionen, Arrays, Strings, Booleans, Date Objects, Math Objects, Regular Expression, Pattern sind Objekte.

ECMAScript ist eine Script-Sprache, die innerhalb von HTML-Dokumenten verwendet werden kann. Der anzeigende Browser interpretiert die Script-Statements. Mit ECMAScript können HTML-Seiten interaktiv gestaltet werden (Animationen, Lauftexte, Marquees, Statuszeile, Events, onMouseOver, usw.) und mehrere Fenster (Framesets) gleichzeitig aktualisiert werden.

Mit ECMAScript können Formularprüfungen während der Eingabe durchgeführt werden. Die neuen Browser unterstützen mit Hilfe von ECMAScript dynamische WWW - Seiten. Z.B. können die Hintergrund / Vordergrund - Farben während dem Laden der Seite automatisch oder im Dialog geändert, die aktuelle Uhrzeit benutzt, formatierter WWW - Text erstellt werden. ECMAScript - Programme werden direkt in die HTML - Datei gestellt und ähnlich zu Batch-Dateien oder Shell-Scripts ausgeführt. Weil der ECMAScript interpretiert wird, werden nur kleine Script-Programme verwendet. Die Ausführung von großen Programmen ist langsam. Der Client - Anwender hat keinen Schutz vor Programmfehlern ( Endlosschleife ).



Bookmarklet (auch: Favelet) javascript:-Code in Kommandozeile

Bookmarklet (auch: Favelet)

Ein Bookmarklet ist ein kleines JavaScript-Makro, das als Bookmark gespeichert wird und dadurch die Funktionen eines Webbrowsers erweitert. Ein Bookmarklet entspricht einem Lesezeichen auf das Pseudoprotokoll javascript:, das ermöglicht, Code durch den Browser auszuführen.

Beispiel für Browser-Adresseingabe:
javascript:i=3;alert('erg='+4*i)

Kleine ECMAScript-Codestücke können in der Adresszeile des Browsers ausgeführt werden. Bookmarklets sind solche kleine Hilfsmittel, die ECMAScript benutzen und Fähigkeiten des Browsers erweitern. Bookmarklets sind klein, einfach, gratis, ungefährlich. Bookmarklets können in der Adresszeile des Browsers (bei aktivem ECMAScript) ausgeführt werden. Bookmarks (Favoriten, Lesezeichen) speichern Internet-Adresse. Bookmarklets können als Bookmark gespeichert werden ("Zu Favoriten hinzufügen...").

Beispiele:



ECMAScript/JavaScript (SDI/MDI, Bedeutung) Was bedeutet ECMAScript?

ECMAScript/JavaScript (Bedeutung)

Ursprünglich waren HTML-Seiten mehr als SDI und weniger als MDI-Applikationen gedacht. Der Browser verfügt über ein "event-driven", "single-threaded" Programmiermodell und die eingebauten Möglichkeiten für Ereignissfolgen sind auf bestimmte Knoten innerhalb einer Seite ausgerichtet. Es gibt Unterschiede, wie z.B. für die Event-Handler-
function (e) (e = e | | event; var target = e.target | | e.srcElement; ... )

Multiple Document Interface (MDI) bezeichnet eine Form der grafischen Benutzeroberfläche für Programme. In Programmfenstern können in separaten Unterfenstern (Frames) gleichzeitig mehrere Dokumente geöffnet werden. Statische HTML-Seiten können aus der SEO-Sicht und den derzeitigen Begrenzungen von Suchmaschinen betrachtet werden und es gibt dann zahlreiche, wenig differenzierte Kommentare ("screaming frames are evil"). Natürlich können Frames und Frameset auch unter den modernen, dynamischen Möglichkeiten von Web-Applikationen betrachtet werden. Siehe z.B. wikipedia MDI (de) oder MDI (en) . Siehe auch Why Use HTML Frames

Hinweise zu ECMAScript-Code-Konventionen (Schreibweisen) finden sich z.B. bei Code Conventions (crockford) . Mit dem ECMAScript-Online-Tool jslint kann die Einhaltung der Code-Konventionen geprüft werden.



Beispiele: Vergleich zwischen ECMAScript und Java

Beispiele: Vergleich zwischen ECMAScript und Java

Dieses Beispiel findet sich hier (Vergleich zwischen JavaScript und Java, Creating the Hierarchy).

beispiel-vergleich-js-java
JavaScript Java
function Employee () {
  this.name = "";
  this.dept = "general";
}
public class Employee {
   public String name;
   public String dept;
   public Employee () {
      this.name = "";
      this.dept = "general";
   }
}
JavaScript Java
function Manager () {
  this.reports = [];
}
Manager.prototype = new Employee;

function WorkerBee () {
  this.projects = [];
}
WorkerBee.prototype = new Employee;
public class Manager extends Employee {
   public Employee[] reports;
   public Manager () {
      this.reports = new Employee[0];
   }
}

public class WorkerBee extends Employee {
   public String[] projects;
   public WorkerBee () {
      this.projects = new String[0];
   }
}
JavaScript Java
function SalesPerson () {
   this.dept = "sales";
   this.quota = 100;
}
SalesPerson.prototype = new WorkerBee;

function Engineer () {
   this.dept = "engineering";
   this.machine = "";
}
Engineer.prototype = new WorkerBee;
public class SalesPerson extends WorkerBee {
   public double quota;
   public SalesPerson () {
      this.dept = "sales";
      this.quota = 100.0;
   }
}

public class Engineer extends WorkerBee {
   public String machine;
   public Engineer () {
      this.dept = "engineering";
      this.machine = "";
   }
}