Diskret JavaScript är ett JavaScript - sätt för webbprogrammering . Termen introducerades 2002 av Stuart Langridge [1] . Principerna för diskret Javascript förstås vanligtvis som följande:
På grund av inkompatibla implementeringar av språket och dokumentobjektmodellen i olika webbläsare har JavaScript haft ett rykte som ett språk olämpligt för seriös applikation och utveckling. Tillkomsten av standardbaserade webbläsare , tillkomsten av AJAX -gränssnitt och Web 2.0 förändrade situationen, vilket gjorde JavaScript till ett viktigt verktyg. Om tidigare JavaScript användes för relativt enkla och oviktiga uppgifter, såsom indatavalidering på webbläsaren och dekorativa element, började det i framtiden användas för att skapa webbplatsens huvudfunktionalitet.
Prestandan för en webbplats för största möjliga publik av användare, inklusive tillgänglighet för användare med funktionshinder , är huvudmålet med ett icke-påträngande tillvägagångssätt. Uppnåendet av målet baseras på separationen av presentation och beteende, där beteendet programmeras med hjälp av externa JavaScript-skript och kopplas till semantisk uppmärkning [4] .
Genom att tillämpa ett icke-påträngande tillvägagångssätt är det lättare att uppnå följande resultat [4] :
Cris Heilmann , en av förespråkarna för det diskreta tillvägagångssättet, skrev sju regler för det 2007 [4] :
Traditionellt placerades JavaScript-funktionsanrop direkt i dokumentets uppmärkning . Exemplet nedan illustrerar en typisk implementering av formulärfältsvalidering:
<input type= "text" name= "date" onchange= "validateDate(this);" />I ett välstrukturerat tillvägagångssätt för utveckling är uppmärkning avsedd att beskriva strukturen i ett dokument, inte dess beteende. Att blanda struktur och beteende leder bland annat till dålig underhållsbarhet på webbplatsen. Detta händer av samma anledning som när man blandar struktur och presentation: om webbplatsen innehåller hundratals onchangedatafält kan det vara en tidskrävande procedur att lägga till lämpliga attribut till varje (och ändra dem senare om det behövs).
Den diskreta lösningen är att programmatiskt installera händelsehanterare. Detta uppnås vanligtvis genom att logiskt separera element som kräver en eller annan hanterare i en klass med efterföljande bearbetning:
<input type= "text" class= "validatedDate" />Skriptet kan titta på alla indataelement relaterade till klassen validatedDateoch ställa in önskad hanterare för dem:
fönster . onload = function () { var inputs , i ; ingångar = dokument . getElementsByTagName ( 'input' ); for ( i = 0 ; i < ingångar . längd ; i ++ ) { if ( matar in [ i ]. klassnamn == 'validatedDate' ) { inputs [ i ]. onchange = function () { validateDate (); }; } } }; function validateDate (){ // handler logic }Följande skript är specifikt för jQuery JavaScript-biblioteket :
$ ( dokument ). ready ( funktion (){ $ ( 'input.validatedDate' ). bind ( 'change' , validateDate ); }); function validateDate (){ // handler logic }Eftersom attributet classåterspeglar elementets semantiska roll stämmer detta tillvägagångssätt väl överens med W3C: s rekommendationer baserade på nuvarande standarder.