2012-04-25 6 views
0

J'ai rencontré un problème que je n'avais jamais vu auparavant avec le navigateur que nous connaissons et aimons tous. Sur cette page - http://weresayingido.com/register - les étiquettes et le texte d'aide ne s'affichent pas normalement dans IE. Cependant, en clignotant rapidement le Datepicker en utilisant le code suivant, tout le texte est rendu normalement.IE 7 bug d'affichage et jQuery Datepicker

// IE detection hackery 
if ('\v' == 'v') { 
    // Flash the Datepicker UI 
    $('input[name="date"]').focus(); 
    $('input[name="date"]').blur(); 
    setTimeout("$('body').mousedown()", 1); 
} 

(Oui, le setTimeout est nécessaire, sinon le bloc Datepicker reste juste là. Non, je ne sais pas pourquoi, mais j'aimerais savoir.)

Étant donné que c'est par tous les moyens un hack plutôt hacky, je me demande pourquoi cela se produit et s'il est possible de reproduire sans utiliser cette supercherie, en particulier en utilisant juste CSS/HTML. Quelqu'un arrive à connaître les réponses à ces questions?

tl; dr: Quelque chose que l'interface utilisateur de jQuery fait est de forcer le rendu du texte de manière visible dans IE 7, ce qui n'est pas le cas autrement. Puis-je résoudre ce problème avec CSS/HTML?

Liens utiles:

Répondre

1

IE7 n'aime pas visibility, et n'a pas Considérez body comme un élément réel.

Gardez votre page visible (ce qui est également mieux pour les malheureux utilisateurs non-JavaScript que vous pourriez avoir). Si vous devez absolument, utilisez body {display: none;} dans votre style.css, et faites-le visiblement via $('body').show() dans votre script.js. Restez à l'écart de visibility.

Cheers.

+0

J'ai inversé ce bit 'visibility' sur mon élément de contenu et il semble fonctionner correctement - apparemment, il était juste cependant, il traite les choses du corps. Merci aussi de m'avoir fait remarquer le côté non-JS - je n'y avais pas vraiment réfléchi car, vraiment, qui n'a pas JS allumé? Mais cela vaut probablement la peine que le FOUC s'assure que tout le monde puisse l'utiliser. Une idée de la raison pour laquelle le problème Datepicker résolvait le problème de visibilité? Je ne comprends toujours pas celui-là. –

+0

Je ne sais pas avec certitude, mais l'outil datepicker actualise l'élément body (ou ajoute une classe supplémentaire, ce qui force une actualisation). De toute façon, bon d'entendre ça fonctionne! – Seabass