Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

графический счётчик/секундомер (kraj)
Author Message
kraj
Заглянувший



Joined: 04 Mar 2007
Posts: 4
Карма: 0
   поощрить/наказать


PostPosted: Sun Mar 04, 2007 4:19 pm (написано за 14 секунд)
   Post subject: графический счётчик/секундомер
Reply with quote

Привет.
Прошу помощи в написание скрипта следующей формы:
ннннн,ккк - где ккк изменяется от 000 до 999 с возможностью задания скорости изменения, а при достижения 999 соответственно изменяется и ннн=ннн+1, и ккк=000 и т.д. Счётчик не должен зависеть ни от действий посетителя, ни от времени, а начать своё действие, как только была создана страничка, ну или аккумулировался всего единственным разовым открытием страницы, а дальше бы вел счет сам по себе.
Заранее благодарен.
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sun Mar 04, 2007 4:31 pm (спустя 12 минут; написано за 22 секунды)
   Post subject:
Reply with quote

kraj
Давайте архив с изображениями - я напишу пример реализации счетчика на изображениях...
Back to top
kraj
Заглянувший



Joined: 04 Mar 2007
Posts: 4
Карма: 0
   поощрить/наказать


PostPosted: Sun Mar 04, 2007 4:59 pm (спустя 27 минут; написано за 32 секунды)
   Post subject:
Reply with quote

2Гость
filetoyou.ifolder.ru/1274572
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sun Mar 04, 2007 8:53 pm (спустя 3 часа 54 минуты; написано за 2 минуты 8 секунд)
   Post subject:
Reply with quote

Quote:
Счётчик не должен зависеть ни от действий посетителя
на сколько ни от каких?
Quote:
как только была создана страничка, ну или аккумулировался всего единственным разовым открытием страницы, а дальше бы вел счет сам по себе.
почистится history & cookie, поменяется динамический IP и как это определит сервер? IMHO только через авторизацию на сервере. но и там при очистке кук бока будут.
Back to top
View user's profile Send private message
kraj
Заглянувший



Joined: 04 Mar 2007
Posts: 4
Карма: 0
   поощрить/наказать


PostPosted: Sun Mar 04, 2007 9:50 pm (спустя 57 минут; написано за 4 минуты 18 секунд)
   Post subject:
Reply with quote

возможно простейшим вариантом будет с использованием SSI: разность времени на сервере и временем открытия страницы, и дальнейшая отбработка полученного числа в javascripte по заданной функции: чтобы возникала иллюзия непрерывной работы счётчика Вот только виду своей неопытности и требуется помощь.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sun Mar 04, 2007 9:55 pm (спустя 5 минут; написано за 2 минуты 31 секунду)
   Post subject:
Reply with quote

dimagolov wrote:
почистится history & cookie
Да уж - зря я получается весь вечер "убил" вот на это (ну да ладно - потренировался):
Code (JavaScript): скопировать код в буфер обмена
/**
 * @fileoverview Simple imitation of the counter of visitings on page.
 *
 * Tested in IE6, Opera8+, Gecko/20040206+ (Win XP).
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * @author AKS
 * @link {http://forum.dklab.ru/users/Aks/}
 * @version unknown ;)
 */


({
   
    imagesHolderID: 'counter',

    imagesPath: 'images/',
   
    imagesExtention: '.gif',
   
    counterLength: 6,
   
    preloadIndicator: 0,
   
    countTime: 1000,
   
    preloadedImages: function () {
        var arr = [],
            i = 10,
            path = this.imagesPath,
            ext = this.imagesExtention,
            caller = this,
            onLoad = function () {
                caller.preloadIndicator++;
            };
        while (i--) {
            arr[i] = new Image;
            arr[i].onload = onLoad;
            arr[i].src = path + i + ext;
        }
        return arr;
    },
   
    createItems: function () {
        var arr = [],
            i = this.counterLength,
            imgs = this.preloadedImages(),
            frag = document.createDocumentFragment();
        while (i--) {
            arr[i] = {
                img: document.createElement('img'),
                counter: 0
            };
            arr[i].img.src = imgs[0].src;
            frag.appendChild(arr[i].img);
        };
        this.preloadedImages = imgs;
        this.documentFrag = frag;
        return arr;
    },
   
    initCounterItems: function () {
        var caller = this;
        this.counterItems = this.createItems();
        this.onContentLoaded(function () {
            caller.prepStartCounter(); });
    },
   
    onContentLoaded: function (aCallback) {
        var script,
            operaVer = window.opera && window.opera.version
                && parseInt(window.opera.version()) < 9;
        if (document.addEventListener) {
            document.addEventListener('DOMContentLoaded',
                                      aCallback, false);
        }                               
        if (/WebKit|Khtml/i.test(navigator.userAgent) || operaVer) {
                return (function () {
                    (/loaded|complete/.test(document.readyState))
                    ? aCallback()
                    : setTimeout(arguments.callee, 50);
                })();
        }
        if (/MSIE/i.test(navigator.userAgent)) {
            script = document.createElement('script');
            script.defer = true;
            script.onreadystatechange = function () {
                if (/loaded|complete/.test(this.readyState)) {
                    aCallback();
                    script = null;
                }
            };
            script.src = '//:';
        }
    },
   
    prepStartCounter: function () {
        var cookie = this.getCookie('counter'),
            caller = this,
            block = document.getElementById(this.imagesHolderID);
        block.appendChild(this.documentFrag);
        (function () {
            (caller.preloadIndicator == 10)
            ? (cookie && cookie.length > 0
              ? caller.startWithCookie(cookie)
              : caller.startTickingDown(0))
            : setTimeout(arguments.callee, 50);
        })();
        this.addHandler(window, 'unload',
                        function () { caller.onUnload(); });
    },
   
    startWithCookie: function (aValue) {
        var i = 0,
            len = aValue.length,
            items = this.counterItems,
            imgs = this.preloadedImages,
            num;
        for (; i < len; i++) {
            num = +aValue.charAt(i);
            items[i].counter = num;
            items[i].img.src = imgs[num].src;
        };
        this.startTickingDown(0);
    },       
     
    startTickingDown: function (aIndex, aBool) {
        var item = this.counterItems[aIndex],
            caller = this;
        if (!item)
            return;
        if (++item.counter > 9) {
            item.counter = 0;
            this.startTickingDown(aIndex + 1, true);
        }
        item.img.src = this.preloadedImages[item.counter].src;
        if (!aBool)
            setTimeout(function () {
                caller.startTickingDown(aIndex); }, this.countTime);
    },
   
    addHandler: function (aObj, aEvent, aFunc) {
        if (aObj.addEventListener) {
            aObj.addEventListener(aEvent, aFunc, false);
        }
        if (aObj.attachEvent) {
            try {
                aObj.attachEvent('on' + aEvent, aFunc);
            } catch (aEx) {}
        }
    },
   
    onUnload: function () {
        var value = '',
            items = this.counterItems,
            i = 0,
            len = items.length;
        for (; i < len; i++) {
            value += items[i].counter;
            items[i].img = null;
        };
        this.setCookie('counter', value);
    },
   
    setCookie: function (name, value) {
        var curCookie = name + "=" + value;
        document.cookie = curCookie;
    },
   
    getCookie: function (name) {
        var prefix = name + "=",
            start = document.cookie.indexOf(prefix),
            end,
            index;
        if (start == -1)
            return null;
        index = start + prefix.length;
        end = document.cookie.indexOf(";", index);
        if (end == -1)
            end = document.cookie.length;
        return document.cookie.substring(index, end);
    }

}).initCounterItems();
Тут для блока:
Code (html): скопировать код в буфер обмена
    <div (december.com/html/4/element/div.html) id='counter'> (december.com/html/4/element/.html)</div>
создается счетчик из изображений с цифирками и тикает по таймеру (время задается)...

Last edited by AKS on Mon Mar 05, 2007 3:05 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sun Mar 04, 2007 10:31 pm (спустя 35 минут; написано за 3 минуты 37 секунд)
   Post subject:
Reply with quote

Quote:
Да уж - зря я получается весь вечер "убил" вот на это (ну да ладно - потренировался)
ну, ну чего зря, красиво в общем, а то что я писал это ограничения технологии www как таковой.
только вопрос:
задача отслеживания "некативности" (наличия-отсутствия focus (???) на документе) открытой страницы не ставиласть или при ее решении возникли затруднения?
Back to top
View user's profile Send private message
kraj
Заглянувший



Joined: 04 Mar 2007
Posts: 4
Карма: 0
   поощрить/наказать


PostPosted: Sun Mar 04, 2007 11:33 pm (спустя 1 час 1 минуту; написано за 58 секунд)
   Post subject:
Reply with quote

Я обескуражен и в шоке, даже простое «спасибо» неудобно говорить. Виски Джек Дениэлс или шампанское Мадам Клико, но я у тебя в долгу.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Mon Mar 05, 2007 7:35 am (спустя 8 часов 2 минуты; написано за 4 минуты 32 секунды)
   Post subject:
Reply with quote

dimagolov
Quote:
задача отслеживания "неативности" ... открытой страницы не ставиласть или при ее решении возникли затруднения?
Даже и в мыслях не было - я ведь кое-как успел собрать-надергать (и потестировать немножко) получившееся из того, что было под рукой. Я куки-то добавил лишь после вашего сообщения, чтобы уж не совсем по-детски все выглядело...
Back to top
View user's profile Send private message Send e-mail
dimasik
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Apr 24, 2007 3:00 pm (спустя 1 месяц 20 дней 7 часов 24 минуты)
   Post subject:
Reply with quote

ребята кто нибудь перешлите по почте на javascript счетчик общего посещения,(только общего посещения). зарание благодарен
Di_m_as@List.ru
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Apr 27, 2007 9:21 pm (спустя 3 дня 6 часов 21 минуту; написано за 52 секунды)
   Post subject:
Reply with quote

Добрый вечер!
Ребята мо у кого есть готовый таймер ГРАФИЧЕСКИЙ сострелкой секундной ?
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Apr 27, 2007 9:22 pm (спустя 1 минуту 8 секунд)
   Post subject:
Reply with quote

Добрый вечер!
Ребята мо у кого есть готовый таймер ГРАФИЧЕСКИЙ сострелкой секундной ?
Скинте плз оч надо!!!
Back to top
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sat Apr 28, 2007 3:21 pm (спустя 17 часов 58 минут; написано за 3 минуты 25 секунд)
   Post subject:
Reply with quote

1. рисуем циферблат
2. рисуем 60 секундных стрелок
3. рисуем 60 минутных стрелок.
4. рисуем 48 часовых стрелок (двигать каждые 15 минут, можно и 60, тогда их каждые 12 минут двигать)
5. Берем библиотеку прозрачности forum.dklab.ru/viewtopic.php?p=114785#114785
6. Рисуем все картинки из п. 1-4 поверх друг друга и делаем прозрачными
7. Берем идею из этой темы как картинки менять каждую секунду и часы готовы ;)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML