Forum moderators:
molotov, EntertainerLT
|
3/22/2011 6:27:13 AM
/
398 messages
/
the topic was opened by _Серёга_
.
|
|
hatabi4:з.ы. изначально хотелось тикающие часы обратного отсчета) щас не могу вспомнить на каком домене видел Пример "тикающих часов обратного отсчета" дашь?)
|
Kh.d: hatabi4:з.ы. изначально хотелось тикающие часы обратного отсчета) щас не могу вспомнить на каком домене видел Пример "тикающих часов обратного отсчета" дашь?) Имел ввиду хотя бы описание, что, как и где должно считать.
|
найти домен не смог(где видел). Часы сделаны по формату: 00:00:00 и идет обратный отсчет до начала игры ближайшей
|
Вставлять каждый раз счетчик - не очень удобно, как мне кажется. 2 hatabi4 :
<!-- Простой счётчик времени до следующей игры --> <table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;"> </td></tr></tbody></table> <script> var ngd = new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) var NGTimer = function(){var d = Math.ceil((ngd - Date.now()) / 1000);$("#next-game-timer").text(isNaN(ngd.getDate())?"целую вечность....":(Math.floor(d/86400) + "д. " + Math.floor(d%86400/3600) + "ч. " + Math.floor(d%3600/60) + "м. " + d%60 + "с.").replace(/ (\d\D)/ig," 0$1"));setTimeout(NGTimer, 1000);} NGTimer(); </script> Это самый простенький вариант. К секундам, минутам, часам добавляется ведущий ноль, если анонсов нет вообще - вместо времени выводится фраза "через целую вечность".
Если интересует что-то, что будет выглядеть, как счетчик, который генерируется по ссылке - пишите) Посижу, сделаю что-нибудь на таком же уровне анимации.
P.S. Это написано под правую колонку, для того, чтобы вставить счетчик по центру вверху, ПЕРЕД анонсами, придётся чуть-чуть переделать. Опять таки, будет нужно - пишите)
UPD: Не корректно отображается на некоторых страницах, чуть позже исправлю.
|
Kh.d, спасибо! вот именно такой скрипт и искал
|
Kh.d: Вставлять каждый раз счетчик - не очень удобно, как мне кажется. Я ответил на то, что понял из вопроса. Понял неверно, видимо. (:
|
Поправил счетчик. Теперь работает корректно, во всяком случае, похоже на то.
<!-- Простой счётчик времени до следующей игры --> <table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">?д. ?ч. ?м. ?с.</td></tr></tbody></table> <script> var NGTimerInit = function(ttng){var NGTimer = function(ttng){setTimeout(NGTimer, 1000, ttng-1);$("#next-game-timer").text(ttng?(Math.floor(ttng/86400) + "д. " + Math.floor(ttng%86400/3600) + "ч. " + Math.floor(ttng%3600/60) + "м. " + ttng%60 + "с.").replace(/ (\d\D)/ig," 0$1"):"...............");};NGTimer(ttng)};if (document.location.pathname.match(/^\/Default\.aspx$|^\/$/)){NGTimerInit(Math.ceil((new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) - Date.now()) / 1000));}else{$.get("/Default.aspx").done(function(r){var t = $(r).find("[id$=_EnterGameTimerHolder] [id^=TimerTexttime]:first").text().match(/\d+ /gi);NGTimerInit(t?t[0]*86400+t[1]*3600+t[2]*60+t[3]*1:undefined);})} </script>
|
Kh.d: Поправил счетчик. Теперь работает корректно, во всяком случае, похоже на то.
<!-- Простой счётчик времени до следующей игры --> <table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">?д. ?ч. ?м. ?с.</td></tr></tbody></table> <script> var NGTimerInit = function(ttng){var NGTimer = function(ttng){setTimeout(NGTimer, 1000, ttng-1);$("#next-game-timer").text(ttng?(Math.floor(ttng/86400) + "д. " + Math.floor(ttng%86400/3600) + "ч. " + Math.floor(ttng%3600/60) + "м. " + ttng%60 + "с.").replace(/ (\d\D)/ig," 0$1"):"...............");};NGTimer(ttng)};if (document.location.pathname.match(/^\/Default\.aspx$|^\/$/)){NGTimerInit(Math.ceil((new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) - Date.now()) / 1000));}else{$.get("/Default.aspx").done(function(r){var t = $(r).find("[id$=_EnterGameTimerHolder] [id^=TimerTexttime]:first").text().match(/\d+ /gi);NGTimerInit(t?t[0]*86400+t[1]*3600+t[2]*60+t[3]*1:undefined);})} </script> ага. первый вариант работал только на главной странице, на всех остальных писал (всех страницах домена) - "ждем вечность..."
|
и все же не все гладко...( на произвольных страницах вместо цифр многоточие, ну и еще на нескольких системных
|
Пример такой системной страницы? UPD Произвольные страницы - как я понимаю, все страницы с шаблоном "стандартный"?
UPD 2 Проверил на произвольной странице с шаблоном "стандартный" - скрипт внедряется в правую колонку, работает. Проверил на произвольной странице с шаблоном "простой" - скрипт внедряется в саму страницу, работает.
|
Ошибку нашёл, исправил. Итак, 3 ( UPD 3.5) версия :
<!-- Простой счётчик времени до следующей игры --> <table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">?д. ?ч. ?м. ?с.</td></tr></tbody></table> <script> var NGTimerInit = function(ottng){var tst = Date.now();var NGTimer = function(){setTimeout(NGTimer, 500); var ttng = ottng - Math.floor((Date.now()-tst)/1000);$("#next-game-timer").text(ttng?(Math.floor(ttng/86400) + "д. " + Math.floor(ttng%86400/3600) + "ч. " + Math.floor(ttng%3600/60) + "м. " + ttng%60 + "с.").replace(/ (\d\D)/ig," 0$1"):"...............");};NGTimer()};if (document.location.pathname.match(/^\/Default\.aspx$|^\/$/)){NGTimerInit(Math.ceil((new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) - Date.now()) / 1000));}else{$.get("/Default.aspx").done(function(r){var t = $(r).find("[id$=_EnterGameTimerHolder] [id^=TimerTexttime]:first").text();NGTimerInit(t?(t.match(/.*?(\d+)\s*дн*/)||[0,0])[1]*86400+(t.match(/.*?(\d+)\s*час*/)||[0,0])[1]*3600+(t.match(/.*?(\d+)\s*мин*/)||[0,0])[1]*60+(t.match(/.*?(\d+)\s*сек*/)||[0,0])[1]*1:undefined); })} </script> UPD: Убрал постепенно появляющуюся погрешность, теперь время считается относительно точно.
|
да, был косяк с произвольными страницами со стандартным шаблоном
|
А есть ли скрипт, который закрывал бы сектора в нескольких разных уровнях одновременно?
|
Кстати вот какой вопрос возник, может кто сталкивался, или администрация соизволит ответить... Развлекаюсь я тут помаленьку со сторонней обвязкой к движку. JavaScript не знаю толком (да и запретить его когда-то обещали), поэтому решаю задачу в лоб, отдельным веб-приложением. Есть желание с этого веб-приложения бить код в движок. Сама реализация-то не проблема, вопрос в другом: меня движок не заблокирует по ip как бота, если будет играть, допустим, 10-20 команд (соответственно авторизации в движке и вводы кодов будут идти с одного ip)?
|
2 strangeman: А почему не возвращать код на клиент, и пусть он его сам отправляет?
|
Kh.d: 2 strangeman: А почему не возвращать код на клиент, и пусть он его сам отправляет? Cross-domain? Но это же обычно запрещено. Или я неправильно понял?
|
strangeman: Kh.d: 2 strangeman: А почему не возвращать код на клиент, и пусть он его сам отправляет? Cross-domain? Но это же обычно запрещено. Или я неправильно понял? Почему X ? Делаешь аджакс к своему бэкенду, в зависимости от логики возвращаешь то, что тебе нужно и КОД. И потом отправляешь код с фронтенда - просто симулируешь "вбитие" кода клиентом. На клиенте придется использовать джаваскрипт, но чисто символически.
|
Kh.d: Почему X ? Делаешь аджакс к своему бэкенду, в зависимости от логики возвращаешь то, что тебе нужно и КОД. И потом отправляешь код с фронтенда - просто симулируешь " вбитие" кода клиентом. На клиенте придется использовать джаваскрипт, но чисто символически. А, через AJAX. Ну да, вариант, спасибо.
|
|
|
|