IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modifier la fonction setTimeout


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 9
    Points
    9
    Par défaut Modifier la fonction setTimeout
    Bonjour,
    Je voulais savoir si il était possible de modifier voire ignorer un timeout dans une page que je consulte, si oui comment ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout("play()", 4000);
    Merci.

    Florian

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut,
    tout dépend quels sont tes outils… Je suppose que tu as Firebug.
    Tu peux essayer ceci, c’est une méthode brutale qui va effacer tous les timeouts en cours :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var lastTimer = setTimeout(function(){});
    for (var i = 0; i < lastTimer; i++) {
    	clearTimeout(i);
    	clearInterval(i);
    };
    Sinon tu peux aussi faire :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    play = null;
    Ou encore :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout = function(){};

    Y’a d’autre moyens plus sophistiqués à l’aide de GreaseMonkey, mais si celui-ci te suffit, on ne va pas entrer dans les détails.


  3. #3
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Une mini remarque, après ces excellentes explications ^^

    Ne manque-t-il pas un param à setTimeout pour la première méthode ?
    Citation Envoyé par Watilin Voir le message
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var lastTimer = setTimeout(function(){}, 10000);
    for (var i = 0; i < lastTimer; i++) {
    	clearTimeout(i);
    	clearInterval(i);
    };

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    C’est pas standard, mais il semblerait qu’il y ait une valeur par défaut de 10 ms.
    J’ai vérifié sous IE8, Opera, Safari (Windows), Chrome, en gros partout où on a une console…
    Par contre y’a un joli merdier avec IE car le lastTimer est un très grand nombre, ce qui fait que la boucle for peut durer plusieurs minutes !
    Il vaut mieux boucler à l’envers,
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i = lastTimer; i--;) {}
    et s’arrêter dès qu’on juge que le timer gênant a bien été supprimé (à la première ou deuxième alerte « un script ne répond pas… »), ou préférer manipuler play.


  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    @Watilin : ta méthode me semble quand même assez barbare
    Mais pour tout dire, j'en vois pas d'autre... à moins de mieux connaitre le contexte de la demande

    Ensuite, le second paramètre est logiquement obligatoire, je pense que son absence revient plutôt à ce qu'il soit à 0. Ce qui constitue une astuce qui peut être intéressante dans certaines situations. En effet, le délai à 0 dans un setTimeout ou un setInterval lance la fonction en paramètre dès que disponible, c'est-à-dire après que tous les traitements internes (en particulier la gestion des événements) aient achevé leur exécution.

    Enfin, il est habituellement considéré qu'un délai inférieur à 25ms ne peut pas être considéré comme fiable.

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par Bovino Voir le message
    @Watilin : ta méthode me semble quand même assez barbare
    Je suis tout à fait d’accord

    J’en profite pour dire que pour les animations visuelles, le délai idéal semble être celui des cartoons, soit 40 ms (25 images/secondes). Au délà de ce seuil, ça commence à être saccadé.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Hello,

    merci pour ces indications, ça m'a bien aidé.

    J'ajouterai juste une chose : le paramètre time est obligatoire pour que ça fonctionne sur tous les navigateurs, les timeout restent "en vie" sur IE et Chrome quand on ne le spécifie pas.

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var lastTimer = setTimeout(function(){}, 1);
    for (var i = 0; i < lastTimer; i++) {
    	clearTimeout(i);
    	clearInterval(i);
    };
    pour tuer tous les timeout sur tous les navigateurs.

Discussions similaires

  1. Réponses: 27
    Dernier message: 14/01/2008, 09h57
  2. Réponses: 2
    Dernier message: 26/03/2007, 17h25
  3. Boucle avec la fonction setTimeout
    Par mathilda dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/10/2006, 10h08
  4. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 11h55
  5. Réponses: 3
    Dernier message: 19/07/2005, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo