2010-11-09 55 views
4

我有一個適用於Firefox和Chrome的頁面。在IE7中,我遇到了一個相當有趣的行爲,樣式表不加載。但是,如果我按CTRL F5,它會。ie7未加載我的樣式表

這是非常惱人的,至少可以說。

任何人都會遇到此問題?任何建議?條件HTML(用於分離IE特定的JavaScript,因爲IE7在與IE陰影過濾器結合時不會很好地響應幾個jQuery效果)加載一個特定於IE的樣式表,用於解決某些f-ed up定位相關的spec違例)。

回答

2

IE只是緩存CSS和不檢查一個新的,因爲它具有相同的名稱。爲了強制新的CSS加載,你將不得不改變名稱。很多時候,人會做一個版本號來解決這個位IE的:

mySheet.001.css 
mySheet.002.css 
...etc. 

這樣,它會被重新加載爲所有用戶的第一次修改的版本號 - 只是一定要改變參考以及。

+0

再次,如果我沒有清除緩存,強制獲取並恢復IE出廠設置,則需要重啓IE。不過,我會仔細檢查。 – xmars 2010-11-09 02:09:28

+1

我的天啊,你是對的。 IE只是一個可怕的可怕產品。人們會希望在清除所有內容(cookies,歷史記錄,臨時文件,緩存,數據等)之後,將緩存設置更改爲始終獲取,然後單擊「恢復工廠」,該死的事實際上會按照它的設想進行。不,顯然不是。 – xmars 2010-11-09 02:14:40

+4

避免重命名yout文件的一個好方法是在文件名末尾扔一個?v = xxxx。 IE會識別參數是不同的,它不會擊中緩存。 – 2010-11-09 02:26:02

1

您是否嘗試更改IE緩存設置?

+0

是的。這不是Maurizio,我清除了所有內容,並將緩存設置更改爲始終獲取。樣式表中是否有可能存在錯誤,並且它恰好適用於所有瀏覽器(包括IE ocasionally?)。 IE不會正確加載頁面,但是如果我點擊了CTRL F5,它的確如此。 – xmars 2010-11-09 02:06:23

0

@naspinski:第xmars寫道,他清除緩存。問題不會在更新後看到更改。不要建議使用CSS名稱漏洞利用。緩存是爲了某些東西,它提供了更高的效率,而網站沒有更新,並且應該能夠從這個解決方案中受益。此外,Etag是應該用來觸發客戶端更新的適當機制,而不是一些草率的解決方法。

@xmars:IE7沒有已知的,報道,轉載和記錄關於有條件的意見聯級聯樣式表錯誤。無論你是一個強大的bug發現者,或者只是錯誤的。我第二次投票。鏈接您的文件。我們來看看它們。

2

一個好的技巧,以防止緩存是使用查詢字符串的CSS文件。

嘗試:

<link rel="stylesheet" type="text/css" href="style.css?v=00001" /> 

如果序列數,當你改變它會自動重新下載CSS文件,而不需要你將其重命名。您也可以對圖像和其他文件執行此操作。

編輯:我覺得更加有用的,如果你有一個經常變化的網站使用的日期作爲字符串,而不是版本號。只是讓它更人性化。

<link rel="stylesheet" type="text/css" href="style.css?v=130906-1" />