我正在尝试扩展this script以允许处理多个页面。
我想使用逗号分隔的列表,而不是使用单个时间戳:1305536229613,1305536315210,1305536318026
问题是脚本服务器端正确设置了cookie但js代码不起作用(至少在Opensuse 11.3上的Firefox 3.6.17中)。
我必须在设置时间间隔之前添加$.cookie(cookieName, null)
(!)以使cookie = $.cookie(cookieName);
在下面2行工作...(我怎么发现它我不知道......)。
此外,更新cookie不起作用:我可以在另一个页面中看到使用服务器脚本cookie一直在增长
$(document).ready(function(){
var cookieCheckTimer;
var cookieName = 'download_token';
var $wait = $('.wait');
var $waitMsg = $('<span>Processing, please wait...</span>').prepend(
$('<img />').attr('src', '/img/wait.gif').css({
'vertical-align': 'middle',
'margin-right': '1em'
}));
//add hidden field to forms with .wait submit
$wait.parent().each(function(){
$(this).append($('<input />').attr({
'type': 'hidden',
'name': cookieName,
'id': cookieName
}));
});
$wait.click(function(){
var token = String(new Date().getTime());
//set token value
$('#' + cookieName).val(token);
//hide submit buttons
$(':submit').hide();
//append wait msg
$(this).after($waitMsg);
//why?? don't know...
$.cookie(cookieName, null) //<<<<<<<<<<
//set interval
cookieCheckTimer = window.setInterval(function(){
var cookie = $.cookie(cookieName);
if (cookie != null){
cookie = cookie.split(',');
var idx = cookie.indexOf(token);
if (idx >= 0){
//detach wait msg
$waitMsg.detach();
//show again submit buttons
$(':submit').show();
//remove token
cookie.splice(idx, 1);
//clear timer
window.clearInterval(cookieCheckTimer);
//update cookie value
if (cookie) $.cookie(cookieName, cookie.join(','));
else $.cookie(cookieName, null);
}
}
}, 1000);
});
});