我想我需要使用javascript来做这个,所以我把它放在堆栈溢出。所以,我的网站有两个主题,唯一的区别是一个是纯色(背景),另一个是重复的图像,所以我没有为它们制作单独的css文件。我在导航栏中有两个链接可以更改它(使用javascript)。在css文件中它是纯色,所以当页面加载时,它就像那样开始。当点击图像主题链接时,它将document.body.backgroundImage设置为图像,并且当按下纯色主题链接时,它仅将背景图像设置为“”。 (空),这样你就可以再次看到颜色。那么我怎样才能使主题持久化,而不是在用户转到另一个页面时以及何时返回另一个页面时更改主题。感谢。

编辑:我可以使用PHP或javascript。

有帮助吗?

解决方案

如果你正在使用所有的javascript并且没有任何服务器端代码可以使用,这里有一个设置和读取cookie的JS示例:

将此函数添加到JS中,然后在主题更改时运行它:

function set_theme(name){
  document.cookie='sel_theme='+name+';';
  }//so, run set_theme('whatevername'); when it is set by the user

要读取cookie并在页面加载时设置主题(使用jQuery或类似的$(document).ready()会比onload更好,但这里是一个直接的js / dom示例)

 window.onload=function(){
var cookie_pos=document.cookie.indexOf('sel_theme=');//locate value in cookie
if(cookie_pos!=-1){//if string was found
  var cookie_flavor=substr(cookie_pos+10,document.cookie.indexOf(';',cookie_pos));//extract the value of the cookie
  /*then run your already existing change theme function using the extracted name*/
  }    

其他提示

您可以使用会话来跟踪用户在服务器端的首选项。当用户重新启动并选择了主题(您可以从会话变量中确定)时,服务器将提供具有backgroundImage设置而不是纯色的HTML。当用户切换首选项时,您可以发出更新会话变量的ajax请求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top