渲染CSS时,我有这个问题,我似乎无法找到一个解决方案...从缓存中
我有使罚款与本地IE7(而不是效仿的页面IE7退回到IE6标准模式一个来自IE9/IE8)初始加载,但在从浏览器缓存获得服务的后续请求中回退到IE6标准模式。 IE7知道如何处理多个CSS类,比如“div.class1.class2”,而IE6标准模式不支持 - 因此,除了第一个访问外,我的页面每次访问都会中断。
下面是如何重现它:
- 打开IE7(真正的一个,从IE9/IE8 IE7仿真模式将无法正常工作!)
- 去hhttp://测试版。 upcload.com/widget/popup?garmentId=workaholicfashion-5276777 & SID =
- 在初次拜访,凡事都要好看和花花公子(例如蓝色按钮,就像在Chrome或FF)
- 重装页面现在,几个CSS规则破坏,因为浏览器回落到IE6标准模式(不怪怪模式,我检查了一个! document.compatMode仍然是“CSS1Compat”)
- 清除缓存,刷新,一切都看起来不错,再次
- 重复往往你喜欢
所以它似乎是,当这些文件都得到来自供应亚马逊服务器,IE7渲染它们就好了,包括包含多个类的CSS规则。 (例如“div.class1.class2”)当您尝试使用完全相同的代码重新加载完全相同的页面时,它以某种方式切换到IE6标准模式(不是怪癖模式),该模式不理解链接的CSS类并打破几个设计,例如按钮。 我尝试添加几个不同的Doctype/Meta标题,但它们都没有区别,当前页面是XHTML严格有效并且具有X-UA兼容IE =边缘标题,但仍然无法在从缓存加载时正确呈现。 我可以做出的头文件唯一的区别是未修改的请求缺少Content-Type头文件,但这不应该是个问题,对吧?
呵呵,为了让它一切顺利,当我在本地开发服务器上打开与IE7完全相同的页面时,即使在重新加载之后,它也能很好地呈现! :/
更新
好了,所以我终于能够重现它在开发服务器上。唯一不同的是“max-age”标题,导致浏览器不在本地缓存任何内容。当我增加缓存时间时,IE7开始缓存这些文件,这些文件在从缓存中加载后又一次导致设计中断。 所以它必须是从缓存而不是从服务器提供文件的问题。
更新2
我把范围缩小到CSS文件。看起来,当IE7从缓存(即没有Content-Type标头)和IE7模式从服务器加载时,IE7或者将其呈现为IE6模式。 (Content-Type:text/css) 有没有人有一个想法,为什么会这样?也许一些格式不正确的CSS规则? 作为一种解决方法,我现在向样式表中添加一个随机参数以防止缓存,从而防止IE7切换到IE6模式,但即使从样式表中删除所有错误和警告后问题依然存在。
IE是相当困难相比,Chrome和FF支持,在我的经验。你声明了什么'DOCTYPE'? – starbeamrainbowlabs 2012-07-25 17:13:23
'<!DOCTYPE HTML PUBLIC “ - // W3C // DTD XHTML 1.0严格// EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>' 呀,我对这个浏览器兼容性的东西并不陌生,但是我遇到了这个特殊问题。 :/ – 2012-07-25 18:13:34
重新更新2:您是否验证了样式表中的错误?你有没有CSS黑客?你有没有使用特定于IE的'filter'风格(因为这有一些非标准的语法)?您是否可以通过删除部分或全部文件内容来解决问题? – SDC 2012-07-26 13:38:20