JavaScript
Børre Stenseth

JavaScript

JavaScript har sine røtter hos Netscape. Wikipedias [1] beskrivelse av JavaScript er ganske utfyllende når det gjelder språkets historie, standardisering og utbredelse.

soc-js

JavaScript er et objektorientert språk. Det er ikke en "lightversjon" av Java. JavaScript brukes i hovedsak for å programmere dynamikk på vevsider. Opp gjennom årene har JavaScript blitt vurdert på forskjellig måte. Noen har dømt språket til en snarlig død, mens andre har vært mer entusiastisk. JavaScript er idag etablert som det eneste alternativet for programmering i nettlesere. Språket inngår som en nødvendig del av alle resonnementer om dynamikk på vevsider og handterer både dokumentstruktur (HTML) og stilsett (CSS) og JavaScript er verktøyet som kontrollerer tilgang til import av materiale til en vevside via XMLHttpRequest, AJAX (Asynchronous JavaScript And XML). Det dukker stadig opp biblioteker skrevet i JavaScript for ymse formål og vi ser en økende fleksibilitet i arbeidsdelingen mellom klient og tjener.

Alt dette forutsetter at nettleseren legger forholdene til rette for at vi kan nå alle komponenter på vevsiden som objekter i JavaScript, og at vi kan fange opp og respondere på begivenheter. Når mulighetene for å gjøre flere ting i JavaScript øker er det sjelden fordi vi får en ny versjon av selve språket, det skyldes at parseren i nettleseren eksponerer ny objekter, nye egenskaper ved objekter eller ny begivenheter. HTML5 utvider repetoaret av muligheter kraftig, vi har fått nye begivenheter å respondere på, vi har fått nye elementer og nye egenskaper, også ved gamle elementer. DOM (Document Object Model) er utvidet. Det er viktig å merke seg at selv om HTML5, i motsetning til XHTML, ikke krever velformet XML, så er den strukturen som bygges i hukommelsen når websiden parses en komplett DOM.

For de som vil sette seg godt inn i JavaScript synes dette å være en god bok: JavaScript, The definitve Guide[2]. Det du finner på disse sidene er ikke på noen måte laget slik at det yter språket full rettferdighet. Det er satt sammen som en slags førstehjelpspakke for å kunne løse relativt enkle og oversiktlige problemer.

Sandboks

Det er viktig å merke seg at når vi bruker JavaScript på klienten så kjører vi i det som ofte kalles en "sandbox", altså en lukket omgivelse. Vi kan ikke lese eller manipulere data på selve klienten, vi kan bare nå det som er koplet til selve nettleseren og det dokumentet den viser. Det er noen unntak fra dette:

  • Vi kan kan bruke sette localStorage eller sessionStorage i HTML5. Dataene lagres da på klientmaskinen, med fortsatt innenfor sandkassa, enten for en sesjon eller lenger. Tidligere brukte vi cookies til dette. Localstorage og sessionStorage er langt mer fleksible og lettere å programmere mot.
  • Vi kan browse filsystemet på klienten via input-elementer med type="file". Her er det brukeren som har kontroll og som browser. Vi kan ikke, fra JavaScript, plukke opp annet enn det brukeren kontrollerer.
  • I HTML5 kan vi også dra filer og kataloger inn i et felt i browseren. Fortsatt er det brukeren som har kontroll.

Syntaks

Generelt kan vi notere oss at JavaScript har en syntaks som ligner ganske mye på Java. Vi har variable, men ikke typer. Vi har arrayer og de viktigste kontrollstrukturene som if-else, repeat, for, while. Vi kan drive unntaksprogrammering, try-catch-finally.

I de følgende modulene vil vi ta opp de vanligste anvendelsene av JavaScript på vevsider.

Det finnes et svært stort antall vevsider på nettet med løsningsforslag i form av JavaScript-kode for de forunderligste problemer og finurligheter. Mange av kodeeksemplene du finner er skrevet for gamle nettlesere og er unødig kompliserte. Vær litt kritisk til en del av denne koden. Ofte kan den både forenkles og gjøres mer robust.

Referanser
  1. JavaScript Wikipedia en.wikipedia.org/wiki/JavaScript 25-01-2014
  1. JavaScript, The Definite Guide David Flanagan 2011 O'Reilly 978-0-596-80552-4