10.02.2012, 19:39
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от denisich84
|
Можно же как то запомнить время когда был включен таймер? и отсчитывать от этого времени то время которое нам надо!
|
Частично можно, но так никто не делает.
Одно из возможных решений: мониторить события window.onunload, window.onoffline, window.onhashchange, window.onpagehide, window.onbeforeunload и сохранять периодически значение в куки, потом идентифицировать пользователя по сессии и IP, но после смены IP (для динамического адреса достаточно перезагрузки ПК) определить пользователя не получится. По крайней мере в тех случаях если не использовалось API браузера.
Сообщение от denisich84
|
там надо две строчки дописать все уже написано)))
|
Желаю удачи
Последний раз редактировалось monolithed, 10.02.2012 в 19:56.
|
|
10.02.2012, 19:54
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
Сообщение от denisich84
|
пускай не умничает умник! будто я без него не знаю где справочники искать!
|
я бы тоже пришел к такому выводу, что ты либо не знаешь либо искал но не нашел, либо нуб, потому что если бы человек хотел чтобы за него написали скрипт тогда он бы попросил бы так "слушай,гуглить вломы, скажи какие команлы писать а, братюнь!"
суть в том что я 5 лет изучаю js, и я тратил на это время, мне бы не хотелось делиться своим трудом с незнакомцами просто так, ДАЖЕ за большое пожалуйста. Ты принял попытку, мыл кому надо тот поделится и поможет мне, ну так вот тебе человек и помог, спасибо должен говорить, он ссылку тебе нашел где почитать, или ты хотел чтобы он оттуда скопипастил текст сюда? Тогда бы тебе легче было? совсем обнаглел что ли? уже по ссылкам кликать вломы?! я думаю вряд ли тебе тут кто-то будет помогать еще после такого отношения. тут тебе не техподдержка javascript! тут люди которые общаются на форуме, и иногда от скуки заходят в этот раздел чтобы помогать новичкам понять непонятое ими из учебников. или помочь найти решение или ошибку.
Последний раз редактировалось Mахmахmахimus, 10.02.2012 в 19:59.
|
|
10.02.2012, 20:04
|
Интересующийся
|
|
Регистрация: 10.02.2012
Сообщений: 18
|
|
Ты начало темы то почитай, что там написано? Повторить? Что я много где был и ничего не нашел подходящего, вот нашел два скрипта боле менее нормальных и попросил их связать. Зачем мне из за двух строк горы лопатить, иногда проще чтобы объяснили и подсказали чем энциклопедии читать и не понимать о чем речь. Я нормально попросил, и сопли я тут разводить не собираюсь!
P.S. Если бы я пришел и написал: "напишите мне таймер такой то и такой мне в лом искать " другой разговор.
Последний раз редактировалось denisich84, 10.02.2012 в 20:08.
|
|
10.02.2012, 20:05
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
ок)
|
|
11.02.2012, 12:55
|
Интересующийся
|
|
Регистрация: 10.02.2012
Сообщений: 18
|
|
Вот еще не плохой скрипт но при закрытии браузера таймер сбивается:
Код:
|
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<style>
#set_timer, #timer, #stop_timer {display: none}
#timer {color: black}
</style>
<script>
var FINAL, TIMER;
onload = function ()
{
with (document)
{
_CS = getElementById ('cS'); SS_ = getElementById ('sS');
_CM = getElementById ('cM'); SM_ = getElementById ('sM');
_CH = getElementById ('cH'); SH_ = getElementById ('sH');
_CD = getElementById ('cD'); SD_ = getElementById ('sD');
}
var dC = unescape (document.cookie);
if (dC.indexOf ('type=1') < 0)
{document.getElementById ('set_timer').style.display = 'block'; SD_.focus ()}
else
{
var pm = dC.split ('; ');
for (var j = 0, lj = pm.length; j < lj; j++)
if (pm [j].indexOf ('type=1+') == 0) {FINAL = pm [j].split ('+') [1]; break}
var cT = parseInt (new Date ().valueOf () / 1000, 10);
var d = FINAL - cT;
document.getElementById ('txt').innerHTML = (d >= 0) ? 'До конца света осталось' : 'После конца света прошло';
if (d < 0) {d *= -1; document.getElementById ('timer').style.color = 'red'}
var s = d % 60; d -= s; d /= 60; _CS.innerHTML = s;
var m = d % 60; d -= m; d /= 60; _CM.innerHTML = m;
var h = d % 24; d -= h; d /= 24; _CH.innerHTML = h; _CD.innerHTML = d;
with (document)
{
getElementById ('timer').style.display = 'block';
getElementById ('stop_timer').style.display = 'inline';
}
TIMER = setTimeout ('FuncTimer ()', 1000);
}
}
function FuncSetTimer ()
{
var sDv = SD_.value, sHv = SH_.value, sMv = SM_.value, sSv = SS_.value;
if (sDv.replace (/\d/g, '').length || sHv.replace (/\d/g, '').length ||
sMv.replace (/\d/g, '').length || sSv.replace (/\d/g, '').length) return;
var per = ((sDv) ? sDv : 0) * 24 * 60 * 60 + ((sHv) ? sHv : 0) * 60 * 60 +
((sMv) ? sMv : 0) * 60 + ((sSv) ? sSv : 0) * 1;
var cT = new Date ().getTime ();
FINAL = per + parseInt (cT / 1000, 10);
document.cookie = escape ('type=1+' + FINAL + '; expires=' + (cT + 180 * 24 * 60 * 60* 1000));
_CS.innerHTML = (sSv) ? sSv : 0; _CM.innerHTML = (sMv) ? sMv : 0;
_CH.innerHTML = (sHv) ? sHv : 0; _CD.innerHTML = (sDv) ? sDv : 0;
with (document)
{
getElementById ('set_timer').style.display = 'none';
getElementById ('txt').innerHTML = 'До конца света осталось';
getElementById ('timer').style.display = 'block';
getElementById ('stop_timer').style.display = 'inline';
}
TIMER = setTimeout ('FuncTimer ()', 1000);
}
function FuncTimer ()
{
var cT = parseInt (new Date ().valueOf () / 1000, 10);
var cDv = _CD.innerHTML, cHv = _CH.innerHTML, cMv = _CM.innerHTML, cSv = _CS.innerHTML;
if (cT <= FINAL)
{
cSv = (cSv != 0) ? --cSv : 59;
if (cSv == 59) cMv = (cMv != 0) ? --cMv : 59;
if (cSv == 59 && cMv == 59) cHv = (cHv != 0) ? --cHv : 23;
if (cSv == 59 && cMv == 59 && cHv == 23 && cDv != 0) --cDv;
}
else
{
document.getElementById ('txt').innerHTML = 'После конца света прошло';
document.getElementById ('timer').style.color = 'red';
cSv = (cSv != 59) ? ++cSv : 0;
if (cSv == 0) cMv = (cMv != 59) ? ++cMv : 0;
if (cSv == 0 && cMv == 0) cHv = (cHv != 23) ? ++cHv : 0;
if (cSv == 0 && cMv == 0 && cHv == 0 && cDv) ++cDv;
}
_CS.innerHTML = cSv; _CM.innerHTML = cMv;
_CH.innerHTML = cHv; _CD.innerHTML = cDv;
TIMER = setTimeout ('FuncTimer ()', 1000);
}
function FuncStopTimer ()
{
clearTimeout (TIMER); FINAL = 0;
SD_.value = ''; SH_.value = ''; SM_.value = ''; SS_.value = '';
with (document)
{
cookie = escape ('type=0+0; expires=1000');
getElementById ('timer').style.display = 'none';
getElementById ('timer').style.color = 'black';
getElementById ('stop_timer').style.display = 'none';
getElementById ('set_timer').style.display = 'block';
}
}
</script>
</head>
<body>
<div id="set_timer">
Установите продолжительность отсчёта:
<p>дни: <input id="sD">
<p>часы: <input id="sH">
<p>минуты: <input id="sM">
<p>секунды: <input id="sS">
<p><input type="button" value="Запустить обратный отсчёт" onclick="FuncSetTimer ()">
</div>
<div id="timer">
<span id="txt"></span>: <span id="cD"></span> дн., <span id="cH"></span> час., <span id="cM"></span> мин., <span id="cS"></span> сек.
</div>
<input id="stop_timer" type="button" value="Остановить отсчёт" onclick="FuncStopTimer ()">
</body>
</html> |
|
|
11.02.2012, 15:19
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
оч интерсно засуну в свой проект еще есть?
|
|
11.02.2012, 21:18
|
Интересующийся
|
|
Регистрация: 10.02.2012
Сообщений: 18
|
|
Может уже мне кто нибудь поможет? и так уже 3 рабочих скрипта выложил)
|
|
11.02.2012, 23:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Вариант с сохранением...
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
body { background-color:#ffcc33; margin:0px; }
div { color:#0033cc; font:bold 12pt Tahoma; margin:15px; }
</style>
</head>
<body>
<input type="button" onclick="New_start()" value="Start/New">
<input type="button" onclick="Pause();" value="Pause/Go">
<input type="button" onclick="BackTimer();" value="BackTimer">
<input type="button" onclick="Set();" value="Set">
<label><input type="text" value="30" id="sec">sec</label>
<div>Div HTML</div>
<script type="text/javascript">
var t = new Date,
f = 1,
s, n;
t.setHours(0, 0, 0, 0);
window.localStorage.getItem('f') && (f = ~~window.localStorage.getItem('f'));
window.localStorage.getItem('t') && (t = new Date(window.localStorage.getItem('t')));
document.getElementsByTagName("div")[0].innerHTML = t.toLocaleTimeString()
function Timer() {
t = new Date(t.getTime() + f * ((new Date).getTime() - s.getTime()));
document.getElementsByTagName("div")[0].innerHTML = t.toLocaleTimeString();
s = new Date;
window.localStorage.setItem('t', t);
n = setTimeout(arguments.callee, 500)
}
function New_start() {
window.clearTimeout(n);
t.setHours(0, 0, 0, 0);
s = new Date;
Timer()
}
function Pause() {
s ? (window.clearTimeout(n), s = !1) : (s = new Date, Timer())
}
function BackTimer() {
window.clearTimeout(n);
f = -f;
window.localStorage.setItem('f', f);
s = new Date;
Timer()
}
function Set() {
var a = parseInt(document.getElementById("sec").value, 10) || 0;
t.setHours(0, 0, a, 0);
document.getElementsByTagName("div")[0].innerHTML = t.toLocaleTimeString()
};
Pause()
</script>
</body>
</html>
|
|
12.02.2012, 10:12
|
Интересующийся
|
|
Регистрация: 10.02.2012
Сообщений: 18
|
|
Это конечно все хорошо . Мы запустили таймер закрыли браузер открываем например эту страницу через час и таймер начинает идти с того времени с которого мы закрыли браузер, можно сделать чтобы то время которое браузер был закрыт тоже учитывалось? т.е. при закрытом браузере таймер продолжал отсчитывать время.
|
|
12.02.2012, 15:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Сообщение от denisich84
|
при закрытом браузере таймер продолжал отсчитывать время
|
Вам похоже нужен обычный таймер, который показывает время до определённой даты таких полно в инете да и здесь на форуме.Попробуйте поискать или обратитесь в раздел Работа
|
|
|
|