Я пытаюсь расширить этот скрипт , чтобы разрешить работу с несколькими страницами.
Вместо использования одной временной метки я хочу использовать список через запятую, например: 1305536229613,1305536315210,1305536318026
Проблема в том, что сервер сценариев правильно устанавливает куки, но js-код не работает (по крайней мере, в Firefox 3.6.17 на Opensuse 11.3).
Мне пришлось добавить $.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);
});
});
Я использую последнюю версию плагина jquery.cookie из репозитория