怎样通过cookie修改html代码
我举一个夜间模式的例子吧,假如页面上有一个夜间模式的按钮,用户点击以后就会切换到夜间模式的样式,同时这个样式会保留数天,大概的应用场景就是这样的。
如果要做到上面的效果,你首先得准备下面几样东西:
1、jQuery cookie插件,这个百度一下就可以找到,一段很简单的代码,用来实现在用户端加入cookie的功能
2、CSS样式表,可以把白天和黑夜的样式都写入到同一个css里面,也可以把它们分开来写,我这个例子里面是把它们分开来写的,两个css,一个day.css,一个night.css
有了这几样东西,就可以开工了,具体做法如下:
一、在页面中把两个css文件都引用进去,给它们定义一个title,并其中一个加上disabled,让它不被浏览器加载,例如下面这样
<link title="day" rel="stylesheet" type="text/css" href="day.css" />
<link title="night" rel="stylesheet" type="text/css" href="night.css" disabled />
二、引用jQuery cookie插件
三、在html中加入控制夜间模式的按钮,给它们分别加上ID,例如下面这样
<div id="day" class="night_mode">关闭夜间模式<img class="mode_btn" src="images/night_mode_off_btn.png"/></div>
<div id="night" class="night_mode">打开夜间模式<img class="mode_btn" src="images/night_mode_on_btn.png"/></div>
四、加入控制夜间模式的js代码:
$(function() {
var cookie_style = $.cookie("mystyle"); //给cookie加一个标识符
if (cookie_style == null) { //如果cookie为空,就显示白天的样式
$("link[title='day']").removeAttr("disabled");
} else if (cookie_style == "day") { //如果cookie为day,就显示白天的样式
$("link[title='day']").removeAttr("disabled");
$("link[title='night']").attr("disabled", "disabled");
} else { //如果cookie为night,就显示夜间的样式
$("link[title='night']").removeAttr("disabled");
$("link[title='day']").attr("disabled", "disabled");
}
//当用户点击id为night的按钮时的操作
$("#night").click(function() {
var style = $("#night").attr("id"); //把night的值赋予给style
$("link[title='" + style + "']").removeAttr("disabled"); //显示title为night的css
$("link[title='day']").attr("disabled", "disabled"); //隐藏title为day的css
$.cookie("mystyle", style, { //设置cookie的有效期是10天
expires:10
});
});
//当用户点击id为day的按钮时的操作
$("#day").click(function() {
var style = $("#day").attr("id"); //把day的值赋予给style
$("link[title='" + style + "']").removeAttr("disabled"); //显示title为day的css
$("link[title='night']").attr("disabled", "disabled"); //隐藏title为night的css
$.cookie("mystyle", style, { //设置cookie的有效期是10天
expires:10
});
});
});
这样就可以做到通过jquery动态添加样式,同时即使用户关闭了页面,再次访问时仍然可以保留之前设定的样式了。
如果想要只引用一个css样式表,操作方法也跟上面差不多,灵活变通一下就行了。
嗯,谢谢你的回答,不过我的目的是要实现 通过jquery 弹出层,比如向某个div添加个name=‘xx’属性,下次无论打开该文件,这个name属性已经在这个div上面了 ,并且能够看见,
你能帮我解决这个问题么?
谢谢了,师兄!
想要name属性在div上,并且在代码中能够看见是做不到的,jquery只是一个前端脚本,只能通过cookie的方式把它动态加载进页面,用户在访问页面的时候可以看到最终的效果,但是把页面文件保存到本地以后,代码还是原来的代码,如果要改变文件的实际代码,就只能用动态语言来写,例如php什么的,静态语言是没办法做到这个效果的。