Je fais un chat, et j'ai un système qui avertit les utilisateurs quand l'autre utilisateur tape, tout fonctionne bien, mais maintenant je veux le rendre encore meilleur afin qu'il ne bugge pas, et pour ce faire j'ai besoin d'envoyer un évènement via le serveur (en utilisant websockets), donc je ne veux pas que ça se déclenche à chaque fois qu'un utilisateur appuie sur une touche, mais envoie-le toutes les 4 secondes. Ce que j'ai essayé de faire fonctionne bien, il semble fonctionner, mais après quelques secondes, il se déclenche à chaque pression de la touche, parce que la minuterie est foirée ou quelque chose comme ça.Javascript/jQuery timer
var stillTyping = 0;
$("body").on("keypress",".chat-form .chat-textarea",function(event) {
if(!userTyping||stillTyping>3)
{
friendID = $(this).attr("rel");
var currentID = cookie("login");
socket.emit('userChatTyping', friendID, currentID);
setInterval(function(){stillTyping++},1000);
stillTyping = 0;
}
clearTimeout(inputTimer);
userTyping = true;
inputTimer = setTimeout(finishedTyping, 1200);
});
Merci, et aussi le compteur, chaque fois que les incendies, il compte de plus en plus vite, au lieu de seulement chaque seconde, je suppose que ce serait des intervalles multiples en même temps –
Exactement. Chaque fois qu'il y a une pression sur une touche, cela ajoute un autre intervalle. Donc par la 100e touche, vous avez 100 incréments en tapant encore –
Savez-vous d'un moyen d'arrêter cela? –