Einführende Seite en.wikipedia: ECMAScript , Link zur Norm ECMAScript-262 (pdf 2.5MB) .
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
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 |
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.
ECMAScript (siehe ECMAScript-262-Standard (pdf 2.5MB) ) wird in Millionen von Webseiten verwendet (Browser-Voreinstellung).
ECMAScript
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.
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 |
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.
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
IE | Firefox | Safari | Chrome | Opera | iOS Safari | Opera Mini | Opera Mobile | Android Browse | |
---|---|---|---|---|---|---|---|---|---|
Three versions back | 5.5: Unknown | 2.0: Unknown | 3.1: Unknown | 6.0: Yes | 10.0-10.1: Unknown | ||||
Two versions back | 6.0: Unknown | 3.0: Unknown | 3.2: Unknown | 7.0: Yes | 10.5: Unknown | 3.2: Yes | 2.1: Yes | ||
Previous version | 7.0: Unknown | 3.5: Yes | 4.0: Yes | 8.0: Yes | 10.6: Unknown | 4.0-4.1: Yes | 2.2: Yes | ||
Current | 8.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 (=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 ).
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:
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.
Dieses Beispiel findet sich hier (Vergleich zwischen JavaScript und Java, Creating the Hierarchy).
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 = ""; } } |