是什么导致CSS偶尔无法在所有浏览器上加载的?
我正在开发一个Web应用程序,每隔一段时间我们就会遇到一种情况,即页面加载时不应用CSS。 IE6,IE7,Safari 3和FF3中已出现此问题。
页面刷新将始终解决该问题。
使用@import加载了3个CSS文件,所有文件都位于同一样式块中:
<STYLE type="text/css"> @import url([base css file]); @import url([skin css file]); @import url([generated css path]); </STYLE>
在任何情况下,只要我们花时间检查html源,都不会出现异常。访问日志似乎也很正常,无论何时请求静态CSS文件,我们都会获得HTTP 304响应,而生成的CSS则会获得HTTP 200响应。
MIME类型是CSS文件和生成的CSS的text / css。我们正在使用iPlanet服务器,它将请求转发到Tomcat服务器。
davebug问:
Is it always the same css file not loading, or is the problem with all of them, evenly?
没有CSS文件加载。 HTML内定义的任何样式都可以正常工作,但发生这种情况时,任何CSS文件中的任何样式均不起作用。
解决方案
使用ab或者httperf或者curl或者其他方法从网络服务器重复加载CSS文件。也许不是一直为页面提供服务。
如果它经常发生,以至于我们可以在浏览器中看到它,请尝试安装Live http标头Firefox扩展或者Tamper Data扩展,并观察浏览器看到的响应标头。
检查标头是一个好主意,但是我想我们会从中了解到的是,服务器偶尔不会响应请求。
我一直在网上看到这种情况。在刷新,css混乱等之前,图像不会加载。所有情况都可以通过刷新解决。
我想我们可以"修复"此问题的一种方法是,在CS文件中为某个元素的图像指定一个URL。然后,在用javascript进行页面加载时,获取该元素,然后查看该图像是否已加载。如果不是,则重新加载页面。
似乎很异国情调,但这是我唯一的主意...
我发生过类似的事情,我可以通过使用"链接相关"方法而不是" @import"方法首先包含基本样式表来解决。即,将[基本CSS文件]包含项移至:
<link rel="stylesheet" href="[base css file]" type="text/css" media="screen" />
并放在其他人之前。