HTML-scriptingMet HTML-scripting (of soms client-side-scripting) worden scripts (meestal JavaScript) aangeduid die in de HTML-code van een document staan. De scripts zorgen ervoor dat de webpagina interactief wordt. Het is daartoe echter noodzakelijk dat de gebruikte webbrowser de scripttaal ondersteunt. InleidingIn 1995 werd de Netscape Navigator-versie 2.0 uitgebracht, die als eerste browser ondersteuning bood voor scripts in HTML-documenten. De gebruikte scripttaal werd aanvankelijk Livescript en later JavaScript genoemd. Met de introductie van JavaScript werd het mogelijk om de statische HTML-documenten een zekere interactiviteit te geven. Dit heeft in latere jaren geleid tot de lancering van Dynamic HTML en daarna tot nog verdere vergroting van de interactiviteit van HTML-documenten. Microsoft kon in deze ontwikkeling niet achterblijven, en voorzag Internet Explorer van een vergelijkbare scripttaal. Omdat er toch kleine verschillen waren, bracht Microsoft de scripttaal uit onder de naam JScript. Vanaf versie 3.0, ondersteunt Internet Explorer niet alleen JScript, maar ook VBScript en (tot versie 5.x) perlscript. De scripttalen die gebruikt worden in HTML-documenten, worden ook in andere toepassingen gebruikt. De talen worden elk besproken in hun eigen lemma. Browsers en scriptsScripts kunnen overal in een HTML-document worden geplaatst. Er is een speciale HTML-tag die aangeeft dat het om een script gaat. In die tag kan worden aangegeven welke scripttaal wordt gebruikt, als er niets wordt aangegeven, wordt ervan uitgegaan dat het om JavaScript gaat. De scripts in HTML-documenten communiceren met de browser (dus niet direct met het document). De meeste browsers hebben de optie om ondersteuning voor JavaScript uit te zetten. Omdat webpagina's soms scripts bevatten die de browser vragen om pop-ups te openen (meestal met reclame), kiest een deel van de gebruikers er voor om ondersteuning voor scripts uit te zetten. De ondersteuning voor scripts moet in de browser zijn ingebouwd. Alle geavanceerde browsers ondersteunen JavaScript. De ondersteuning voor VBScript is beperkt tot Internet Explorer. Onder Windows gebruikt Internet Explorer de standaard interpreters die in Windows zijn ingebouwd (jscript.dll en vbscript.dll). In andere gevallen is de interpreter onderdeel van de installatie. Er zijn enkele onderlinge verschillen tussen de browsers in de interpretatie van JavaScript. Een andere mogelijke bron van verschillen in interpretatie van scripts is gelegen in gebruik van een ander model van het document door de browser (zie Document Object Model). Toepassingen van scripts in HTMLScripts geven de browser opdracht om iets te doen. De browser kan daar op reageren door bijvoorbeeld een waarschuwing (alert) te tonen. De krachtige toepassingen liggen in opdrachten die betrekking hebben op het getoonde document. Via het Document Object Model kan de browser namelijk eigenschappen van dat document opvragen en aanpassen. Veel gebruikte toepassingen zijn:
Een interessante oefening in HTML-scripting is Wolfenstein 5k, een driedimensionale first-person shooter geschreven in JavaScript met een code van slechts 5119 bytes (dat is vergelijkbaar met een middellang Wikipedia-artikel). Het was een inzending in de competitie van de 5k organisatie in 2002. Deze organisatie had genoeg van te grote webpagina's vol met filmpjes en plaatjes, en daagde iedereen uit om een goede webpagina te maken die kleiner was dan 5 kilobyte. Events en bubblingDe interactiviteit die door HTML-scripts wordt geboden, is gebaseerd op het opvangen van gebeurtenissen (naar het Engels meestal events genoemd). Er zijn twee veroorzakers van events: de gebruiker en de browser. De events van de gebruiker worden veroorzaakt door input via muis en toetsenbord. De events van de browser zijn gerelateerd aan het ophalen van nieuwe documenten (bijvoorbeeld "het document is nu geladen" of "het document wordt nu afgesloten"). Zie ook Lijst van HTML-events. De afzonderlijke elementen van een document kunnen gevoelig gemaakt worden voor de verschillende events. Op het moment dat zo'n event dan plaatsvindt, reageert het element door een taak uit te voeren die met de scripttaal is aangegeven. Het begrip bubbling komt van pas in situaties waar een element van het document gelegen is in een ander element. Als de gebruiker klikt op een plaatje dat in een tabel staat, is dat dan een klik op het plaatje of een klik op de tabel? Het is in eerste instantie een klik op het plaatje, maar de klik wordt doorgegeven aan alle bovengelegen (parent) elementen. Dat proces van doorgeven heet bubbling. In het geval dat deze bubbling ongewenst is, kan het met code worden gestopt. Sandbox security modelHTML-scripts staan in documenten die meestal van het internet worden binnengehaald. Om de gebruiker te beschermen tegen ongewenste code, hebben zulke scripts slechts beperkte rechten. Ze mogen scripts bijvoorbeeld niets op de harde schijf van de gebruiker lezen of aanpassen, zijn netwerkvoorzieningen alleen indirect beschikbaar en geldt wat de browser en webpagina's zelf betreft het "same origin" beginsel. Dit is belangrijk, omdat de gebruikte talen wel volledige programmeertalen zijn. Als zelfstandig programma hebben ze voldoende mogelijkheden om bestanden te lezen en aan te passen. Een dergelijke bescherming wordt een sandbox (zandbak) genoemd: de scripts krijgen een terrein toegewezen waar ze geen kwaad kunnen. Ook plug-ins die bij browsers kunnen worden geïnstalleerd draaien in zo'n sandbox. De meeste veiligheidsproblemen van browsers hebben te maken met lekken in deze sandbox. Zie ook |