我在我的网站皮肤中使用此代码。这项功能目前在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

希望这会有用

10-07 19:38
查看更多