Rezolvarea erorii de dublare a imaginii de fundal (background) în Internet Explorer

În timpul dezvoltării unui proiect web, un comportament neașteptat întâlnit în Internet Explorer (în special în versiuni precum IE9) este dublarea elementelor grafice sau a imaginilor de fundal (background). Într-un caz concret, un formular care includea un container cu fundal personalizat era afișat de două ori pe ecran, deformând complet structura vizuală a paginii.

Deși primele încercări de depanare s-au concentrat pe proprietăți CSS precum lățime/înălțime fixă (width/height) sau overflow: hidden, cauza reală nu ținea de stiluri, ci de o eroare de validitate a codului HTML.

Codul HTML care a generat problema

Analizând structura sursă, problema a fost cauzată de închiderea incorectă și intercalată a tagurilor HTML:

[html]

[/html]

După cum se observă, elementul <div> este deschis în interiorul elementului <form>, dar formularul este închis înaintea containerului <div>.

Cum se rezolvă problema

Pentru a soluționa eroarea de randare, tagurile trebuie imbricate și închise în ordinea corectă:

[html]

[/html]

Browserul Internet Explorer încerca să corecteze automat arborele DOM malformat, ceea ce ducea la duplicarea nodurilor în memorie și, implicit, la randarea dublă a fundalului. Dacă întâmpini anomalii similare de afișare, verifică întotdeauna validitatea codului HTML (de exemplu cu un validator W3C) pentru a te asigura că nu există taguri neînchise sau suprapuse incorect.

Lasă un comentariu