渲染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