De webstandaarden brengt vele discussies met zich mee. Eén daarvan is het gebruik van innerHTML versus DOM benaderingen. Het grootste bezwaar tegen innerHTML is dat het geen onderdeel uitmaakt van de W3C specificatie. Hierdoor is er geen garantie dat het in de toekomst ondersteund zal worden, toch heeft het gebruik van innerHTML veel voorstanders.
Enkele feiten over innerHTML
- Het is geintroduceerd door Microsoft en wordt inmiddels ondersteund in vele webbrowsers;
- Door de brede ondersteuning wordt het door veel webontwikkelaars gebruikt;
- Het beperkt het schrijven van code bij het manipuleren van het HTML document, zie code vergelijkingen;
- innerHTML is gewoonweg sneller: DOM vs innerHTML benchmark.
Ondanks bovenstaande punten is het geen standaard, wat logischerwijs weerstand oproept. Het gaat echter om toegankelijkheid, waar innerHTML niet aan bijdraagt. Naast webbrowsers wordt er ook gebruik gemaakt van andere clients/middelen om webpagina's te bekijken, zoals screenreaders. Alhoewel innerHTML goed ondersteund wordt door minstens de prominente webbrowsers, wordt het niet altijd ondersteund door andere clients.
Een andere kanttekening van innerHTML is dat een uniform gedrag in verschillende webbrowsers niet gegarandeerd kan worden, juist door gebrek aan specificatie van deze javascript-functie. Behalve voor schrijfdoeleinden, kan innerHTML ook gebruikt worden om hele teksten, inclusief html-elementen, als string op te halen. Dit kan, bijvoorbeeld in het geval van een webformulier, verschillende resultaten opleveren in bijvoorbeeld Internet Explorer (waar door de gebruiker ingevoerde waarden wel terug worden gegeven) en Mozilla FireFox (die de daadwerkelijke html teruggeeft en gebruikersinvoer buiten beschouwing laat).
jQuery en DOM
Bij de ontwikkeling van de caption-tool in het kader van mijn afstudeerstage, loop ik tegen deze discussie aan. Ik heb gebruik gemaakt van het javascript framework jQuery. Alhoewel het framework zelf poogt volgens de webstandaarden te functioneren, leent het zich ervoor om op onethische wijze html weg te schrijven in je html document. Om dit te voorkomen, heb ik voor bepaalde doelen Document Object Model benaderingen moeten schrijven. Het gevolg zal duidelijk zijn; het kost gewoonweg meer code. Een kijkje in het project om de code met elkaar te vergelijken volgt spoedig naarmate de afronding van de caption tool nadert.