将cookie添加到现有的Javascript外部CSS文件交换中

Adding a cookie to an existing Javascript external CSS file swap

本文关键字:CSS 外部 文件 交换 Javascript 添加 cookie      更新时间:2023-09-26

我已经创建了一个函数来交换CSS文件,在重新加载页面或转到网站上的另一个页面之前,这个函数运行得很好。我想,虽然我可以不添加cookie,但对于任何将关闭网站并稍后返回的客户,我也可以这样做,而不必切换回他们选择的"网站主题"。

这是现有的功能:

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变量及其属性吗?还是我需要在"set cookie"函数中创建另一个变量,然后确定newlink变量?

我不会交换css,相反,我会制作一个对所有用户都相同的"基本主题",并在该主题上应用一个"皮肤",这样你就有了更易于维护的代码,不必删除/重新添加样式表。所以基本上,当用户选择他喜欢的皮肤时,我会在痴呆症上添加一个新的样式表。

不管怎样,你可以很容易地使用这样的图书馆https://github.com/carhartl/jquery-cookie如果您使用jQuery并在用户更改皮肤时动态设置或更改cookie的值。您的脚本可以在页面加载期间检查该cookie,并相应地附加首选皮肤。

ps如果你想避免FOUC(未格式化内容的闪现),你需要以某种方式引入加载或在服务器端完成整个过程。