我在我的网站皮肤中使用此代码。这项功能目前在Chrome中有效,但在Firefox中则无效。我使用cookie.js
框架将css文件名保存在cookie中。
//create and set cookies for colors
var skinFileName = Cookies.get('skin_file').toString();
//if don't exist cookie for style Load Default stlye
if (skinFileName=="") {
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/style.css');
} else {
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/' + skinFileName + '.css');
}
//change colors of skin
var colors = $('#colour-variations ul li a');
colors.on('click', function () {
var dataTem = $(this).data('theme');
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/' + dataTem + '.css');
Cookies.set('skin_file', dataTem.toString(), { expires: 60, path: '' });
});
当我执行这段代码
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/pink.css');)
在控制台工作,但当我执行此代码
var skinFileName = Cookies.get('skin_file').toString();
我收到此错误:
TypeError: Cookies.get(...) is undefined
最佳答案
Cookies.get('skin_file').toString();
似乎是问题所在。当您第一次运行它时,它不会获得cookie,如果您在其上调用toString
它将抛出一个undefined...
。因此您可以尝试删除toString();
这是我尝试过的小提琴样品。我已经更改了元素的ID,但目标是相同的
//create and set cookies for colors
var skinFileName = Cookies.get('skin_file');
//if don't exist cookie for style Load Default stlye
if (skinFileName=="") {
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/style.css');
} else {
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/skinFileName.css');
}
//change colors of skin
var colors = $('#color_skin');
colors.on('click', function () {
//var dataTem = $(this).data('theme');
$('#color_skin').attr('href', '/DNN_test/Portals/_default/Skins/Crew/css/dataTem.css');
Cookies.set('skin_file', dataTem.toString(), { expires: 60, path: '' });
});
WORKING DEMO
希望这会有用