Πέμπτη 2 Αυγούστου 2007

Internet Explorer 6 και μέγεθος κελιών σε πίνακα

Όπως καταλαβαίνετε τις τελευταίες μέρες κάνω αρκετό development για Internet Explorer 6 (δυστηχώς) κι έτσι χρειάζεται να βρίσκω λύσεις στα διάφορα προβλήματά του.

Το σημερινό πρόβλημα λοιπόν είχε να κάνει με ένα παλιό κώδικα που έφτιαχνε μια ιστοσελίδα με ένα πίνακα. Αυτός ο πίνακας πρέπει να έχει συγκεκριμένο μέγεθος γιατί εκτυπώνεται και δίνεται σε πελάτες. Στην παλιά περίπτωση όλη η html ερχόταν στον browser σε μια γραμμή μέσα από πολλαπλά writes από ένα servlet.

Αφού λοιπόν έφτιαξα μια ωραία σελίδα με τον σκέτο html κώδικα και taglibs παρατηρήθηκε ότι ο πίνακας που έφτιαχνε ο ΙΕ6 ήταν κάπως μεγαλύτερος απ'ότι ο παλιός. Το πρόβλημα βρισκόταν στα κελιά. Αφού σπατάλησα αρκετή ώρα ψάχνοντας να βρω λάθος στον κώδικα τελικά με την βοήθεια του συναδέλφου μου βρέθηκε η λύση.

Αν υπάρχει κενό μεταξύ των html elements μέσα στο td τότε αυτό έχει μεγαλύτερο μέγεθος. Για παράδειγμα αυτό το κελί:

<td>
<center>
<font face = "arial">
Some text
</font>
</center>
</td>

θα έχει μεγαλύτερο ύψος από αυτό το κελί:

<td><center><font face = "arial">
Some text
</font></center></td>


Με κάτι τέτοια είναι που απορώ πως αυτός ο browser ακόμα έχει 75% μερίδιο στους χρήστες. Μου θύμησε μια περίπτωση που είχα συναντήσει παλιά με τον firefox, όμως εκεί ήταν λάθος του specification ( ο firefox το ακολουθούσε πιστά, ενώ ο IE6 είχε πιο λογική συμπεριφορά).
Τότε προσπαθούσα να πάρω με javascript τα παιδιά πχ ενός td. Το 1ο όμως παιδί δεν ήταν html element. Με τα πολλά ανακάλυψα ότι λόγω των tabs και τον αλλαγών γραμμών στον κώδικα ο firefox τοποθετούσε ως 1ο παιδί ενός td ένα κενό στοιχείο κειμένου. Δηλαδή για να πάρω την επιθυμητή συμπεριφορά στη javascript έπρεπε να γράψω όλο το td σε μια γραμμή.
Ώρες ώρες μου τι δίνουν αυτοί οι browser...

Δεν υπάρχουν σχόλια: