2014-09-10 92 views
0

我創建了一個函數來交換CSS文件,這很好地工作,直到重新加載頁面或轉到網站上的其他頁面。我想,雖然我可以逃避不添加cookie,但對於任何將關閉網站並稍後返回而無需返回其選擇的「網站主題」的客戶,我都可以這樣做。添加一個cookie到現有的Javascript外部CSS文件swap

這裏的現有功能:

function changeCSS(cssFile, cssLinkIndex) 
{ 
    var oldlink = document.getElementsByTagName("link").item(cssLinkIndex); 
    var newlink = document.createElement("link"); 
    newlink.setAttribute("rel", "stylesheet"); 
    newlink.setAttribute("type", "text/css"); 
    newlink.setAttribute("href", cssFile); 

    document.getElementsByTagName("head").item(0).replaceChild(newlink, oldlink); 
} 

因此,可以一個cookie使用現有NEWLINK變量及其屬性,或將我需要創建一個「設置cookie的」功能的其他變量,然後將決定新鏈接變量?

回答

0

我不會交換CSS,而是我會爲所有用戶製作一個「基本主題」,我會在該主題上應用一個「皮膚」,以便您擁有更易維護的代碼並且不必刪除/重新添加樣式表。 所以基本上我會追加一個新的樣式表degeneration當用戶選擇他最喜歡的皮膚。

無論如何,如果您使用jQuery並在用戶更改皮膚時設置或更改cookie的值,那麼您可以輕鬆使用類似https://github.com/carhartl/jquery-cookie的庫。您的腳本可以在頁面加載過程中檢查該cookie,並相應地添加首選皮膚。

ps如果您想要避免FOUC(未格式化內容的閃光),您需要引入某種方式加載或完成服務器端的所有事情。

+0

我不打算使用庫或jQuery。最接近我的是交換類。 無論如何,這完全沒有回答我的問題 - 我的問題是關於在現有的Javascript中添加一個cookie。 – warezIbanez 2014-09-10 20:04:06

+0

他們只是建議:)如果你想讓所有東西都保持原樣並且只寫一個cookie,你可以使用'document.cookie'這個香草javascript。你需要幾行,你可以在http://www.w3schools.com/js/js_cookies.asp上了解它 – 2014-09-11 14:51:19

相關問題