Huomaamaton JavaScript on JavaScript - lähestymistapa web - ohjelmointiin . Termin otettiin käyttöön vuonna 2002 Stuart Langridge [1] . Huomaamattoman Javascriptin periaatteet ymmärretään yleensä seuraavasti:
Kielen ja Document Object Model -mallin yhteensopimattomien toteutusten vuoksi eri selaimissa JavaScriptillä on ollut maine kielenä, joka ei sovellu vakavaan sovellukseen ja kehittämiseen. Standardipohjaisten verkkoselaimien , AJAX -rajapintojen ja Web 2.0 :n tulo muuttivat tilanteen tehden JavaScriptistä olennaisen työkalun. Jos aiemmin JavaScriptiä käytettiin suhteellisen yksinkertaisiin ja merkityksettömiin tehtäviin, kuten selainpuolen syötteiden validointiin ja koriste-elementteihin, niin jatkossa sitä alettiin käyttää sivuston päätoimintojen luomiseen.
Ei-tunkeilevan lähestymistavan päätavoite on tarjota verkkosivustoa mahdollisimman laajalle käyttäjäjoukolle, mukaan lukien esteettömyys vammaisille käyttäjille . Tavoitteen saavuttaminen perustuu esityksen ja käyttäytymisen erottamiseen, jossa käyttäytyminen ohjelmoidaan ulkoisilla JavaScript-skripteillä ja sidotaan semanttiseen merkintään [4] .
Käyttämällä ei-tunkeuttavaa lähestymistapaa on helpompi saavuttaa seuraavat tulokset [4] :
Cris Heilmann , yksi huomaamattoman lähestymistavan kannattajista, kirjoitti siihen seitsemän sääntöä vuonna 2007 [4] :
Perinteisesti JavaScript-funktiokutsut sijoitettiin suoraan asiakirjan merkintöihin . Alla oleva esimerkki havainnollistaa tyypillistä lomakekentän validoinnin toteutusta:
<input type= "text" name= "date" onchange= "validateDate(this);" />Hyvin jäsennellyssä kehityksen lähestymistavassa merkintä on tarkoitettu kuvaamaan dokumentin rakennetta, ei sen käyttäytymistä. Rakenteen ja käyttäytymisen sekoittuminen johtaa muun muassa sivuston huonoon ylläpitoon. Tämä tapahtuu samasta syystä kuin yhdistettäessä rakennetta ja esitystapaa: jos sivusto sisältää satoja tietokenttiä, sopivan attribuutin onchangelisääminen kuhunkin (ja tarvittaessa muokkaaminen myöhemmin) voi olla aikaa vievä toimenpide.
Huomaamaton ratkaisu on asentaa tapahtumakäsittelijät ohjelmallisesti. Tämä saavutetaan yleensä erottamalla loogisesti elementit, jotka vaativat yhtä tai toista käsittelijää, luokkaan ja myöhempään käsittelyyn:
<input type= "text" class= "validatedDate" />Skripti voi tarkastella kaikkia luokkaan liittyviä syöteelementtejä validatedDateja asettaa niille halutun käsittelijän:
ikkuna . lataus = funktio () { var inputs , i ; syötteet = asiakirja . getElementsByTagName ( 'syöttö' ); for ( i = 0 ; i < syötteet . pituus ; i ++ ) { if ( syöttää [ i ]. className == 'validatedDate' ) { syötteet [ i ]. onchange = function () { validateDate (); }; } } }; funktio valideDate (){ // käsittelijän logiikka }Seuraava komentosarja koskee jQuery JavaScript -kirjastoa :
$ ( asiakirja ). ready ( function (){ $ ( 'input.validatedDate' ). bind ( 'change' , validateDate ); }); funktio valideDate (){ // käsittelijän logiikka }Koska attribuutti classheijastaa elementin semanttista roolia, tämä lähestymistapa on hyvin sopusoinnussa nykyisiin standardeihin perustuvien W3C :n suositusten kanssa.