Сделал через localStorage, но работает не очень:
<input id="Bit1" value="Счётчик" onclick="Bit( this )">
<input id="Bit2" value="Счётчик" onclick="Bit( this )">
<input id="Bit3" value="Счётчик" onclick="Bit( this )">
<script>
var W;
function initializeStorage() {
if ( typeof(Storage) !== undefined ) {
if ( !localStorage.timersArr ) {
var timersArr = [];
localStorage.timersArr = JSON.stringify( timersArr );
}
} else {
alert( 'Браузер не поддерживает локальные хранилища!' );
}
}
initializeStorage();
if ( localStorage.timersArr ) {
var timersArr = JSON.parse( localStorage.timersArr );
var currentTime = new Date();
for ( var i = 0; i < timersArr.length; i++ ) {
var timeStart = new Date( parseInt( localStorage[timersArr[i]] ) );
var difference = currentTime - timeStart;
var m = 60 - Math.floor( ( difference / 1000 ) / 60 );
var s = 60 - Math.floor( ( difference / 1000 ) ) % 60;
var elem = document.getElementById( timersArr[i] );
elem.value = 'Ждать ' + m + 'm.' + ( s ? s + 's.' : '' );
myTimer( elem );
}
}
function Bit( elem ) {
var o = elem,
id = elem.id,
timersArr = JSON.parse( localStorage.timersArr );
if ( timersArr.indexOf( id ) === -1 ) {
timersArr.push( id );
}
localStorage.timersArr = JSON.stringify( timersArr );
localStorage[id] = new Date().getTime();
o.disabled = 70;
o.value = 'Ждать 60m.';
W = window.open ( '#', 'hero' );
myTimer( o );
}
function myTimer( o ) {
var W = o.value.split ( 'Ждать ' ) [1],
t = 60 * parseInt( W ) - 1 + ((W.indexOf ( 'm. ' ) != -1) ? parseInt( W.split ( 'm. ' ) [1] ) : 0),
m = Math.floor ( t / 60 ),
s = t % 60,
timersArr = JSON.parse( localStorage.timersArr );
if ( t ) {
o.value = 'Ждать ' + m + 'm.' + (s ? (' ' + s + 's.') : '');
setTimeout( myTimer, 1000, o );
}
else {
o.value = 'Счётчик';
o.disabled = 0;
localStorage.removeItem( o.id );
timersArr.splice( timersArr.indexOf( o.id ), 1 );
localStorage.timersArr = JSON.stringify( timersArr );
if ( !W.closed ) W.close ()
}
}
</script>