2012-04-25 99 views
0

我遇到了一个我从未见过的,我们都知道并喜爱的浏览器的问题。在此页面上 - http://weresayingido.com/register - 标签和帮助文本在IE中无法正常显示。但是,使用以下代码快速闪烁Datepicker会导致所有文本正常呈现。IE 7显示错误和jQuery Datepicker

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

(是的,setTimeout的是必要的,否则的日期选择器块只是停留在那里。不,我不知道这是为什么,但我很想知道。)

鉴于这是通过一切手段相当hacky黑客,我想知道为什么这种情况发生,如果有可能不使用这个欺骗,特别是使用CSS/HTML复制。任何人都碰巧知道这些答案?

tl; dr: jQuery UI Datepicker正在做的事情是迫使文本在IE 7中可见地呈现,否则不会。我可以用CSS/HTML解决这个问题吗?

相关链接:使用

回答

1

IE7不喜欢visibility,并且不考虑body一个真正的元素。

保持您的页面可见(这对您可能拥有的不幸的非JavaScript用户来说也更好)。如果你绝对必须在你的style.css文件中使用body {display: none;},并在你的script.js中通过$('body').show()来显示它。远离visibility

干杯。

+0

我把'visibility'换成了我的内容元素,它看起来工作得很好 - 显然它只是把'body'弄糟了。另外,感谢您指出非JS位 - 我没有真正考虑过它,因为真的,谁没有开启JS?但是FOUC可能确保任何人都可以使用它。但是,有什么想法为什么Datepicker的东西正在解决可见性问题?仍然不完全得到那一个。 – 2012-04-26 14:57:16

+0

我不确定,但datepicker刷新body元素(或添加一个额外的类,这将强制刷新)。无论如何,很高兴听到它的作品! – Seabass 2012-04-26 23:46:30