Voici deux fichiers de test:cellules de table IE7 rendus invisibles par CSS ne peuvent pas être rendus visibles par la suite des changements de classe (??)
Le balisage sur les deux pages est presque la même chose. Il y a une table avec deux colonnes. Les éléments <th>
et <td>
d'une colonne (la seconde) sont tous classés dans la catégorie "ordure".
Dans la page "bonne", lorsque vous le chargez, une case à cocher n'est pas cochée en haut. Si vous cochez la case, la deuxième colonne devrait disparaître. Si vous décochez la case, la deuxième colonne revient. Dans la page "Mauvais", la case à cocher commence cochée. Décocher n'a aucun effet dans IE7, bien qu'il fonctionne dans d'autres navigateurs qui ne sont pas possédés par le mal fondamental.
La case à cocher est liée à une petite routine Javascript qui ajoute ou supprime la classe "compact" de la balise <table>
. Il y a une feuille de style qui comprend ceci:
table.compact th.junk, table.compact td.junk {
display: none;
}
Ainsi, ce devrait se produire est ce qui se passe sur la page « bonne ». Cependant, il semble que dans IE7 (peut-être 6 aussi) si les éléments de table commencent de sorte que lorsque initialement rendus qu'ils sont conçus pour être invisibles, ils ne seront jamais vu, indépendamment des changements ultérieurs dans le DOM qui serait apporter de nouvelles règles de style et les laisser visibles. (Cela semble être un problème avec <table>
parties en particulier, je suis en utilisant le même mécanisme ailleurs avec d'autres éléments et ils ont tous fonctionnent très bien.)
Ainsi, la question est: Quelqu'un sait-il de quelque bidouille — révoltant cependant — qui peut être utilisé pour contourner ce comportement idiot? Évidemment, je pourrais essayer de faire en sorte qu'IE7 démarre ses vues avec l'ensemble de contrôle à bascule approprié pour que les cellules du tableau soient visibles, mais dans mon cas cela se produit autour d'une table qui est produite comme une réponse AJAX, et donc désordre je préfère éviter. (La table est aussi une table, c'est un affichage d'informations tabulaires, pas un hack de mise en page.)
J'ai fait des recherches sur google et je n'ai rien trouvé, ce qui ne devrait pas être surprenant si l'on considère le nombre de hits obtenir à partir de "IE7 mise en page bug" recherches.
Peut-être que vous pouvez changer la table de mise en page, laissez un DOM/CSS rafraîchir se produire, et le remettre ... –
@pst c'est ma meilleure idée actuelle - Je peux avoir le contenu chargé AJAX inclure une balise de script IE7 seulement qui définit le contrôle de telle sorte que tout est visible, et lance également un délai d'attente de sorte que 1/4 seconde plus tard, il se réinitialise à ce qu'il est censé être (plus je déclenche mes trucs Javascript). Laid mais ça marche. Je suis juste curieux de savoir s'il y a quelque bidouille CSS bizarre pour le rendre un peu moins fou. Merci quand même! – Pointy