Bonjour,
malgré mes recherches et avoir trouvé la fonction setTimeout pour executer un script au bout de x secondes, cela n'a pas l'aire de 'ralentir' mon script.
Voilà, j'ai une fonction qui s'execute quand on presse une touche :
1 2 3 4 5 6 7 8 9 10 11
| function key_process()
{
if (window.event.type == "keypress" & window.event.keyCode > 0)
{
if(window.event.keyCode == 54)
RightPosition();
else if(window.event.keyCode == 52)
LeftPosition();
}
return true;
} |
déclenché via
document.onkeypress = key_process;
Ainsi, voilà ma que je désire executer pour diriger une image dans ma page :
1 2 3 4 5 6 7 8 9 10
| function LeftPosition()
{
var valueL = 0;
valueL = document.getElementById('tsr').style.left;
valueL = valueL.replace(/px/g, '');
valueL = parseInt(valueL)-10;
if(valueL <= 0) valueL=2;
document.getElementById("tsr").style.left = valueL;
document.onkeypress = key_process;
} |
(j'ai allégé ce code car il est plus complet)
Mais le problème, est que sous chrome, opéra, ceci est exécuté trop rapidement, alors que pour une fois j'aimerais avoir le même effet que IE8 qui l'exécute moins rapidement.
J'utilise donc ceci à la place du code précédent :
1 2 3 4
| function break()
{
document.onkeypress = key_process;
} |
et
1 2 3 4 5 6 7 8 9 10 11
| function LeftPosition()
{
var valueL = 0;
valueL = document.getElementById('tsr').style.left;
valueL = valueL.replace(/px/g, '');
valueL = parseInt(valueL)-10;
if(valueL <= 0) valueL=2;
document.getElementById("tsr").style.left = valueL;
setTimeout('break()', 10000);
} |
Ce que je ne comprends pas c'est que
document.onkeypress = key_process;
appel la fonction key_process() avant les 10 secondes ...
Je pense que c'est du à ceci qui n'est contenu dans aucunes fonctions :
document.onkeypress = key_process;
il n'y a donc pas un autre secours que setTimeout pour vraiment ralentir le script plutôt que de l'executer à x secondes ?
Merci par avance pour vos réponses
Partager