est ici une fonction-et fait qui permet de vérifier tout élément pour le mouvement:
function mouse (element, delay, callback) {
// Counter Object
element.ms = {};
// Counter Value
element.ms.x = 0;
// Counter Function
element.ms.y = function() {
// Callback Trigger
if ((++element.ms.x) == delay) element.ms.callback(element, element.ms);
};
// Counter Callback
element.ms.callback = callback;
// Function Toggle
element.ms.toggle = function (state) {
// Stop Loop
if ([0, "off"][state]) clearInterval(element.ms.z);
// Create Loop
if ([1, "on"][state]) element.ms.z = setInterval(element.ms.y, 1);
};
// Function Disable
element.ms.remove = function() {
// Delete Counter Object
element.ms = null; return delete element.ms;
};
// Function Trigger
element.onmousemove = function() {
// Reset Counter Value
element.ms.x = -1;
};
// Return
return element.ms;
};
Utilisation: mouse(element, delay, callback)
Exemples: Faire un cache de lecteur vidéo la souris après 5 secondes en mode veille et plein écran
let x = mouse(video, 5000, function (a) {
if (document.webkitIsFullScreen) video.style.cursor = "none";
});
x.toggle(1); addEventListener("mousemove", function() {
video.style.cursor = "auto";
});
Chat Room AFK (45 secondes) (en supposant que vous avez une boîte de chat et une fonction d'envoi de message):
let x = mouse(chatBox, (45e3), function (a) {
chatBox.send({ text: chatBox.username + " is AFK.", italic: true });
});
x.toggle(1); x.addEventListener("mousemove", function() {
chatBox.send({ text: chatBox.username + " is no longer AFK", italic: true });
});
Je vois un problème potentiel: Chaque appel à setTimeout retourne un numéro pour un compteur.Quand va-t-il s'envelopper et que se passera-t-il alors? Je suggère plutôt setInterval (update, 1000), où 'update' incrémente une variable que l'événement onmousemove réinitialise. Si la variable obtient plus de 60 dans la mise à jour, alertez l'utilisateur – some
A heads up, ceci ne fonctionne plus dans Chrome – Jay
@Jay travaille pour moi –