كشف عندما الماوس لا يتحرك
-
03-07-2019 - |
سؤال
أنا قادرة على العثور على موضع المؤشر.ولكن كنت بحاجة إلى معرفة ما إذا كان الماوس مستقرة.إذا كان الماوس لم نقل أكثر من 1 دقيقة, ثم قمنا إلى تنبيه المستخدم.
كيف ممكن, هل هناك أي أحداث خاصة لهذا ؟ (فقط أي في جافا سكريبت)
المحلول
وتعيين مهلة عندما يتم نقل الماوس دقيقة واحدة في المستقبل، وإذا تم نقل الماوس، قم بإلغاء تحديد مهلة:
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){alert("move your mouse");}, 60000);
}
نصائح أخرى
وليس هناك طريقة لتحديد توقيت لبدء تزايد بعد كل حدث حركة الماوس؟
إذا كان يحصل في دقيقة واحدة ثم يطفو على السطح مربع الرسالة، ولكن في كل مرة تتحرك الماوس يحصل على إعادة تعيين جهاز ضبط الوقت.
استخدام الموقت أن يعيد قيمته في الحدث mousemove.إذا الموقت تصل إلى 1 دقيقة --> تفعل شيئا.
مزيد من المعلومات على توقيت هنا http://www.w3schools.com/js/js_timing.asp
والمزيد من المعلومات على صورت أحداث الماوس هنا http://www.quirksmode.org/js/events_mouse.html
نعم، لديك الحدث onmousemove في جافا سكريبت، وذلك لتحقيق ما تحتاجه لديك فقط أن تفعل شيئا من هذا القبيل كود:
startTimer();
element.onmousemove = stopTimer(); //this stops and resets the timer
ويمكنك استخدامه على البطاقة وثيقة الجسم على سبيل المثال.
وUPDATE: حققتMarius مثال أفضل من هذا واحد
ويمكنك استخدام الحدث onmousemove. داخله، clearTimeout ()، وsetTimeout (your_warning، 1 دقيقة).
هل يمكن استخدام هذا البرنامج النصي / قصاصة للكشف عن موقف مؤشر الماوس و"تذكر" عليه. ثم استخدام "setTimeout (...)" الموقت للتحقق من موقف دعنا نقول كل ثانية ونتذكر ذلك الوقت.
إذا مرت أكثر من دقيقة واحدة، والموقف لم يتغير، هل يمكن تنبيه المستخدم.
هنا واحد-و-القيام به وظيفة التي يمكن أن تحقق أي عنصر الحركة:
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;
};
الاستخدام:
mouse(element, delay, callback)
أمثلة: جعل مشغل فيديو إخفاء الماوس بعد 5 ثوان عند الخمول و ملء الشاشة
let x = mouse(video, 5000, function (a) {
if (document.webkitIsFullScreen) video.style.cursor = "none";
});
x.toggle(1); addEventListener("mousemove", function () {
video.style.cursor = "auto";
});
غرفة الدردشة AFK (45 ثانية) (على افتراض لديك مربع الدردشة و ارسال رسالة الوظيفة):
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 });
});