4 votes

SetTimeout ne fonctionne pas toujours dans Greasemonkey

J'ai trouvé beaucoup de problèmes similaires mais aucun identique et aucune solution correcte. C'est un problème très étrange.

J'ai un simple script Greasemonkey pour tester le problème :

// ==UserScript==
// @name        testdiddio
// @namespace   http://userscripts.org/users/useridnumber
// @include     https://www.google.it/
// @version     1
// ==/UserScript==

function wait(){
    console.info("wait");
    setTimeout(wait,1000);
}

console.info("start");
wait();

Voici la sortie de Firebug :

start
wait
wait
wait
wait

La fonction wait() est appelée 4 fois puis s'arrête. Si je définis le délai à 100ms, l'appel semble fonctionner pendant au moins 10/15 secondes, puis s'arrête.

J'utilise : Firefox 12.0 Greasemonkey 0.9.19

6voto

Brock Adams Points 36841

Ceci est un bug dans Greasemonkey 0.9.19.
Une fonctionnalité a été ajoutée pour permettre à setTimeout() de fonctionner même lorsque le JavaScript d'une page était désactivé, ce qui a introduit quelques complications (Problèmes 1549, 1552, et 1553, etc.).

Cela devrait être résolu prochainement dans la version 0.9.20, ou revenir à la version 0.9.18.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X