jQuery en Internet Explorer 8

Even een korte post die voor 99% van de wereldbevolking volstrekt niet relevant is, maar waarvan ik weet dat ik het anders ga vergeten:

Als je jQuery of JavaScript in het algemeen gebruikt in Internet Explorer 8 (ik weet niet of dat bij oude versies ook al zo was), let er dan op dat variabelen in je script niet dezelfde naam hebben als dat je voor de ID’s van elementen in je HTML gebruikt. Internet Explorer ziet dat namelijk niet als verschillende objecten.

In de screenshot hiernaast kun je een fout zien die optreedt in zo’n geval. Ik vul een variabele “graph” met de inhoud die ik in de regel erna wil toewijzen aan een <div> met de ID “graph”. Dat gaat goed in Google Chrome en in Firefox, maar niet in Internet Explorer. Interesseert me even helemaal niet of dat wel zou moeten kunnen of niet, de workaround is tamelijk simpel: geef de variabele een andere naam.

Overigens beschikt IE8 standaard over een prima debugger voor zulke scripts (op F12 drukken), dus je kunt in ieder geval gemakkelijker dan vroeger dit soort fouten opsporen.

Een ander probleem dat ik overigens had met Internet Explorer 8 was dat de pagina’s die mijn script produceert in “Quirks Mode” werden weergegeven. En dat leverde niet de gewenste resultaten op, die pagina’s moesten ‘gewoon’ in IE8 Standards mode worden weergegeven. Op deze pagina kun je lezen hoe IE8 bepaalt welke modus gebruikt moet worden. Mijn scripts voegden geen DOCTYPE aan de pagina toe en die wordt nou juist gebruikt door IE8. Toevoegen ervan zorgde er voor dat de pagina weer in Chrome, Firefox en IE8 juist werden weergegeven. Voor een analysetool dat waarschijnlijk toch nooit verder zal komen dan lokaal op mijn systeem vind ik dat even een voldoende brede set browsers.

0 0 stemmen
Bericht waardering
1 Reactie
Inline Feedback
Bekijk alle reacties
Martijn
13 jaren geleden

Pierre,

Internet Explorer heeft er een handje van om “name” en “id” van een element door elkaar te gooien.

Zo kun je een bepaald element een “id” van “graph” geven, maar als er dan ook een element met een “name” van “graph” is dan kan document.getElementById() in Internet Explorer toch het element met de “name” “graph” selecteren. Dan is inderdaad de beste oplossing om het element maar een unieke name/id te geven.

Dit is erg irritant gedrag, maar het komt waarschijnlijk voort uit fouten die Microsoft in het verleden in Internet Explorer heeft gemaakt. De brakke code die mensen daar in het verleden op hebben geschreven moet natuurlijk wel blijven werken (althans, dat vindt Microsoft handig, ook al krijg wordt je browser dan nodeloos ingewikkeld en gaat die daardoor fouten maken).

Met vriendelijke groet,

Martijn