【发布时间】:2012-03-06 15:43:30
【问题描述】:
我完全不知道 cookie...
我在我的网站上使用 Slidedeck,它们提供了一个代码,使返回到带有 slidedeck 的页面的人能够显示最后查看的幻灯片,而不是返回到开头。
但是它设置为一周 - 我想做的是将其更改为基于会话,以便当浏览器关闭时,cookie 不再有效。这个脚本可以吗?
我了解到,如果您将到期时间更改为 0,它将使其基于会话 - 所以我进行了更改:
else {
var expires = "0";
}
但由于上面的 if 语句,我认为这不起作用。
// The default slide to start on is 0.
var startingSlide = 0;
// If we find a cookie with the name that we previously saved, use it.
if(readCookie('slideDeckDemoCurrentSlide')){
// This overrides the default value of 0 if we find a cookie.
startingSlide = readCookie('slideDeckDemoCurrentSlide');
}
var myDeck = $('.slidedeck').slidedeck({
autoPlay: false,
cycle: true,
slideTransition: 'slide',
touch: false,
hideSpines: true,
start: startingSlide, // tell the Deck where to start
complete: function(deck){
// Here we will set a cookie for one week.
// This cookie will store the deck.current value.
//createCookie(name,value,days)
createCookie('slideDeckDemoCurrentSlide',deck.current,7)
}
});
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else {
var expires = "";
}
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)===' '){ c = c.substring(1,c.length); }
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
【问题讨论】:
-
会话是基于服务器的,jQuery 是基于客户端的。你的服务器软件是什么? php? ASP?
-
另外不要忘记关闭浏览器不一定会关闭会话。
-
我的无知暴露无遗。服务器端是 ASP - 但我需要坚持使用 jQuery 并将其合并到这个脚本中。
标签: jquery cookies session-cookies