2014-09-10 93 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

相关问题