Dưới đây là một chức năng một và làm điều đó có thể kiểm tra bất kỳ yếu tố cho phong trào:
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;
};
Cách sử dụng: mouse(element, delay, callback)
Ví dụ: Thực hiện một ẩn video player chuột sau 5 giây khi không hoạt động và toàn màn hình
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 Giây) (giả sử bạn có một hộp chat và một chức năng gửi tin nhắn):
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 });
});
tôi thấy một vấn đề tiềm năng: Mỗi cuộc gọi đến setTimeout trả về một số cho một quầy tính tiền.Khi nào nó quấn quanh và chuyện gì sẽ xảy ra? Tôi đề nghị một setInterval (cập nhật, 1000) thay vào đó, trong đó 'update' tăng một biến mà sự kiện onmousemove reset. Nếu biến được cập nhật trên 60, người dùng thông báo – some
Hãy cảnh báo, điều này không còn hoạt động trong Chrome – Jay
@Jay hoạt động cho tôi –