Accueil > > > PETITE CLASSE DE TIMERS
PETITE CLASSE DE TIMERS
Information sur la source
Description
Petit code fait rapido ce matin suite à une source postée il y a quelques jours... http://www.javascriptfr.com/code.aspx?ID =42289 C'est un compte à rebours on ne peut plus basique... plusieurs timer peuvent être instanciés en même temps... une fois le compte à rebours terminé un code est exécuté si ce dernier a été passé en paramètre lors de l'instanciation du timer... ce code peut être passé soit sous la forme d'une chaine à évaluer, soit sous la forme d'une référence vers une fonction ou une méthode soit sous la forme d'un url vers lequel l'internaute sera redirigé... .. .
Source
/*
* timers objects reference object for global compatibilitie with the setInterval()
*
* @var _timersObjRef
* @access private
*/
var _timersObjRef = {
count: 0,
obj: new Array
};
/*
* timer class constructor
*
* @param mixed exec javascript evaluable code or function reference or url (for redirect) executed at the end of the timer
* @param str target html contener id
* @param int time start value (in seconds)
* @param int tempo decrement offset (in seconds)
* @param bool noAutoStart disable auto start timer
*
* @return object
* @access public
*/
function timer(exec,target,time,tempo,noAutoStart)
{
// object attributs initialize
this._id = _timersObjRef.count++;
this.tempo = (tempo) ? tempo : 1;
this.interval = this.tempo*1000;
this.time = (time) ? time : 5;
this.current = this.time;
this.target = (target) ? target : null;
this._handle = null;
this._exec = null;
if(exec)
{
// we search if the exec var is an url
var regex = new RegExp("^((ht|f)tps?:\/\/)?(www\.)?([A-Za-z0-9-_:]+\\.[A-Za-z]{2,4})|([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+(:[0-9]+)?)", "gi");
//if it is the exec code is a redirection
if (regex.exec(exec) != null)
this._exec = 'location.href = "'+exec+'";';
else
this._exec = exec;
}
//global object ref for setInterval execution
_timersObjRef.obj[this._id] = this;
//set the timer html contener value
this._setContents();
if(!noAutoStart)
this.start();
}
/************************** Publics methods **************************/
/*
* timer start method
*
* @return void
* @access public
*/
timer.prototype.start = function()
{
//register the interval... we use the global referenced timer for updating action
if(!this._handle)
this._handle = setInterval("_timersObjRef.obj["+this._id+"]._update();",this.interval);
}
/*
* timer stop method
*
* @return void
* @access public
*/
timer.prototype.stop = function()
{
if(this._handle)
{
clearInterval(this._handle);
this._handle = null;
}
}
/*
* timer current value reset
*
* @return void
* @access public
*/
timer.prototype.rewind = function()
{
this.current = this.time;
}
/*
* timer count restart
*
* @return void
* @access public
*/
timer.prototype.restart = function()
{
this.stop();
this.rewind();
this.start();
}
/*
* timer time setter
*
* @param int time start value (in seconds)
*
* @return void
* @access public
*/
timer.prototype.setTime = function(time)
{
this.time = (time) ? time : 5;
}
/*
* timer tempo setter
*
* @param int tempo decrement offset (in seconds)
*
* @return void
* @access public
*/
timer.prototype.setTempo = function(tempo)
{
this.tempo = (tempo) ? tempo : 1;
this.interval = this.tempo*1000;
}
/************************** Privates methods **************************/
/*
* timer updating
*
* @return void
* @access private
*/
timer.prototype._update = function()
{
this.current -= this.tempo;
if(this.target)
this._setContents();
if(this.current == 0)
{
this.stop();
if(this._exec)
{
if(typeof this._exec == "function")
this._exec();
else
eval(this._exec);
}
}
}
/*
* timer target contener updater
*
* @return void
* @access private
*/
timer.prototype._setContents = function()
{
var _targetObj;
if(document.getElementById)
_targetObj = (typeof document.getElementById(this.target) == "object") ? document.getElementById(this.target) : void(0);
else if(document.all)
_targetObj = (typeof document.all[this.target] == "object") ? document.all[this.target] : void(0);
else if(document.layers)
_targetObj = (typeof document[this.target] == "object") ? document[this.target] : void(0);
if(!_targetObj)
return false;
// html input ?
if(_targetObj.type && _targetObj.type == "text")
_targetObj.value = this.current;
else
_targetObj.innerHTML = this.current;
}
Conclusion
La classe est assez simple à utiliser... il y a un exemple assez complet dans le zip... .. .
/* * @param mixed exec code js à évaluer, référence vers une fonction/méthode ou url pour redirection * @param str target id du conteneur html * @param int time temps de départ en secondes (par défaut 5) * @param int tempo valeur de décrémentation * @param bool noAutoStart si true le timer ne démarrera pas automatiquement */ var monTimer = new timer(exec,target,time,tempo,noAutoStart);
en outre vous disposez de quelques méthodes pour gérer le timer 4 pour le gérer et 2 setter...
- start() pour le lancer s'il n'est pas en mode auto - stop() pour l'arrêter - rewind() pour le remettre à sa valeur de début - restart() on repart depuis le début
- setTime() pour modifier le temps total du timer - setTempo() pour modifier sont rythme de décrémentation
Voili voilou... aucun bug trouvé hormis le fait, mais ce n'est pas vraiment un bug car c'est dû à javascript lui même, que le rafraichissement des timers (lorsqu'ils sont plusieurs) ne se fait pas seconde par seconde (si le tempo est à 1) mais par (1*nombre de timers) secondes... .. . ;o)
Historique
- 17 avril 2007 12:22:25 :
- Correction du "bug" sur les champs texte lorsque l'attribut value n'existait pas ou était vide... .. .
- 17 avril 2007 12:49:29 :
- Modification de l'expression régulière pour les url et mise à jour du zip
- 17 avril 2007 13:52:39 :
- la dernière après j'arrête... ajout des setters, suppression de la méthode _getContener() un peu superflue vue qu'elle ne sert qu'une fois... modification de l'exemple pour qu'il soit complet... ajout de quelques commentaires (avec mon anglais légendaire lol) dans le code histoire de... .. .
@ tchaOo°
- 17 avril 2007 14:13:17 :
- Correction d'une erreur de frappe... intégré la méthode _execute() dans la méthode _update() ça simplifie et clarifie le code et ça fait de la place... .. .
- 17 avril 2007 14:20:57 :
- Comme c'est un code fait à la va vite on trouve toujours des choses à changer... lol... modification de stop(), start() et restart()... cette fois ci ça devrait être bon... .. .
- 18 avril 2007 02:22:03 :
- Correction description du constructeur...
- 19 avril 2007 16:20:40 :
- Ajout d'une version "compactée" sans les commentaires et avec une indentation plus dense ce qui permet de passer de 193 lignes/4.55 ko à 66 lignes/2.37 ko... .. . ;o)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
compte a rebour space [ par quitues ]
Je recherche un compte à rebours, un décompte space car il démarre du chargement de la page et dé kil s'arrête (par ex. dans 5 sec.), le visiteur est
compte rebours [ par goutedo ]
Bonjour à tous !J'ai un problème tout simple je crois, mais le Javascript et moi on ne s'aime pas beaucoup et du coup j'avance pas.Bre
compte a rebours j h m s a partir de seconde [ par matttt34 ]
Salut tout le monde :) J'ai beau chercher partout je n'arrive pas a trouver ce que je cherche : Je souhaiterais avoir un compte a rebours m'affichan
Compte a rebours [ par Tilix ]
Salut, J'ai trouvé ce petit compte à rebours, mais j'ai besoin de l'améliorer... <SCRIPT LANGUAGE="JavaScript"> <!-- function
Redirection avec compte a rebours [ par twinsen60 ]
BonjourJ'ai ce code ci :<script language="javascript" type="text/javascript"> <!-- window.location.replace( "http://www.un-site.com/une-pag
Compte a rebours [ par ptitdragonvert ]
Bonjour,Je cherche un compte a rebours en javascript avec le decompte 'H:M:S' et la possibilité de pouvoir en mettre plusieurs sur une meme page.Moi j
Décompte (compte a rebours) qui affiche le nombre de mois, de jour, d'heure, de minutes de seconde qui reste avant un évenement [ par slashf ]
salut a tous comme le titre le montre j'ai besoin de créé un compte a rebours qui affiche le nombre de mois, de jour, d'heure, de minutes de seconde q
Compte à rebours [ par CSIBern ]
Bonjour à tous,Je dois créer un petit site concernant un tournois.Pour ça je comptais insérer un compte à rebours donnant le temps jusqu'à l'événement
créer un compte à rebours à l'heure du serveur [ par ajor ]
Bonjour à tous,J'aimerais pour mon site, créer un compte à rebours qui fonctionne à l'heure du serveur, afin que tous les client aient exactement le m
Compte a rebours pour mon site [ par jim0907 ]
Bonjour, Cela fait plusieurs jour que je cherche sur internet un compte a rebours pour mon site, je ne trouve pas du tout ce qu'il me faut alors j'ai
|
Derniers Blogs
PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Magic
Entre 429€ et 429€
|