2010-07-31 38 views

回答

15

在Firefox搏击FOUT: Firefox启动重 - 渲染文本之后window.load事件。 因此,我所做的就是隐藏像Paul Irish这样的内容,但是在window.load之后,我仍然等待200毫秒(为真实渲染提供FF时间),然后显示页面。

我的网站有很多图片,所以为了加快速度,我首先发送页面没有内容,然后用ajax调用获取内容。 这是很多工作来满足FF,但结果是好的。

这是我保罗爱尔兰的变种,请注意我用的知名度代替负文本缩进,以服务游客至少布局速度快:

<script> 
    (function(){ 
    var d = document, e = d.documentElement, s = d.createElement('style'); 
    if (e.style.MozTransform === ''){ // gecko 1.9.1 inference 
    // s.textContent = 'body{visibility:hidden}'; 
    s.textContent = 'body{text-indent:-9999px}'; 
    e.firstChild.appendChild(s); 
    function f() 
    { 
    var ffrendertime = setTimeout (function(){s.parentNode && s.parentNode.removeChild(s)} , 200); 
    } 
    addEventListener('load',f,false); 
    setTimeout(f,2000); 
    } 
})(); 
    </script> 
+0

这是真正有用的,我改成了600,而不是200作为字体wasnt加载足够快。编辑:后来改回了我停止使用谷歌字体API后 - 太慢了。 – 2011-03-09 05:43:20

+0

ffrendeime的点是什么 – 2013-08-26 20:17:12

+0

在html标记中隐藏一个wf-inactive类的文本并且隐藏所有包含文本元素的.wf-inactive的后代节点的标题中的内联样式不会更好而不是做一个古怪的解决方法,在DOM加载后加载文本。认为这将比通过AJAX加载物理内容更好。 – cchamberlain 2015-03-23 17:37:51

18

@Erik,

已经有关于这个问题,其中保罗爱尔兰呼吁FOUT(无样式的文本的闪光)的讨论很多。有许多方法由

1的任何脚本之前,在页面的最顶端把CSS来限制这种标签

2最小化的字体文件

3浏览器缓存与遥远的未来的规模Expires头

4 Gziping你的CSS和字体文件(WOFF不能用gzip压缩)

保罗爱尔兰大约有一个很好的文章:Fighting the @font-face FOUT

史蒂夫Souders的也有他的高性能网站博客一个伟大的文章:@font-face and performance