25. november 2007 - 20:00Der er
9 kommentarer og 1 løsning
DOM, css class og ie7
hej, jeg sidder lige og leger rundt med en side jeg arbejder med der trækker utroligt meget Ajax og finder så ud af at det ikke virker rigtigt i IE7, men firefox klare det flot... Det er tilsyneladende class' ie ikke kan håndtere rigtigt... Når du opretter f.eks. et div elementer med dom og smider en css class på elementer, så får ie7 ikke stylet elementet efter des class, hvilket er irriterende da det virker med id's. Hvorfor laver ie7 sådan en latterlig fejl, er der andre af sådan nogen fejl man bare _skal_ kende, og nok det vigtigste; er der nogen møde at løse problemet på?
Dvs. du kan selvfølgelig stadig skrive: <div class="noget" ...></div> i HTML, men DOM kræver vist: document.getElementById("div").className("noget"); Du kan vist også gøre det mere rigtigt med: document.getElementById("div").setAttribute("className","noget");
Browser-kompabilitet er et svært spørgsmål, men som mine eksempler viser går jeg ind for 'feature-detction' fremfor 'browser-detection'. Ikke alle browsere er ærlige med at navngive sig selv ( IE kalder sig "mozilla" ;) så selv om der _ER_ en variabel man kan teste, er det sikrere (funktionelt bedre) at undersøge forskellige måder at klare det på, og have en graciøs måde at håndtere manglende faciliteter. (F.eks. gmail findes i std og ajax.)
-- og det skal tilføjes, at add/removeEventListener er den officielle standard beskrevet i w3cs DOM-binding, og altså ikke kun dækker FireFox/Mozilla !-)
-- og en helt anden tilføjelse går på, at man _aldrig_ må tilføje events til elementer, som ikke fysisk er indsat i dokumentet, da IE så opretter dobbelte udgaver, hvilket kan generere endog _meget_ grimme memory-leaks ,-(
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.