মাউসের অবস্থানটি রিপোর্ট করা হয়েছে eventmousemoveইভেন্টটির জন্য কোনও হ্যান্ডলার দ্বারা প্রাপ্ত বস্তুর , যা আপনি উইন্ডোতে (ইভেন্ট বুদবুদ) সংযুক্ত করতে পারেন:
(function() {
document.onmousemove = handleMouseMove;
function handleMouseMove(event) {
var eventDoc, doc, body;
event = event || window.event; // IE-ism
// If pageX/Y aren't available and clientX/Y are,
// calculate pageX/Y - logic taken from jQuery.
// (This is to support old IE)
if (event.pageX == null && event.clientX != null) {
eventDoc = (event.target && event.target.ownerDocument) || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = event.clientX +
(doc && doc.scrollLeft || body && body.scrollLeft || 0) -
(doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY +
(doc && doc.scrollTop || body && body.scrollTop || 0) -
(doc && doc.clientTop || body && body.clientTop || 0 );
}
// Use event.pageX / event.pageY here
}
})();
(মনে রাখবেন যে এর মূল অংশটি ifকেবল পুরানো আইইতে চলবে))
কর্মের উপরের উদাহরণ - আপনি পৃষ্ঠার উপরে আপনার মাউসকে টেনে আনতে বিন্দুগুলি আঁকবে। (আইই 8, আইই 11, ফায়ারফক্স 30, ক্রোম 38 এ পরীক্ষিত)
আপনার যদি সত্যিই টাইমার-ভিত্তিক সমাধানের প্রয়োজন হয় তবে আপনি এটিকে কিছু স্টেট ভেরিয়েবলের সাথে একত্রিত করুন:
(function() {
var mousePos;
document.onmousemove = handleMouseMove;
setInterval(getMousePosition, 100); // setInterval repeats every X ms
function handleMouseMove(event) {
var dot, eventDoc, doc, body, pageX, pageY;
event = event || window.event; // IE-ism
// If pageX/Y aren't available and clientX/Y are,
// calculate pageX/Y - logic taken from jQuery.
// (This is to support old IE)
if (event.pageX == null && event.clientX != null) {
eventDoc = (event.target && event.target.ownerDocument) || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = event.clientX +
(doc && doc.scrollLeft || body && body.scrollLeft || 0) -
(doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY +
(doc && doc.scrollTop || body && body.scrollTop || 0) -
(doc && doc.clientTop || body && body.clientTop || 0 );
}
mousePos = {
x: event.pageX,
y: event.pageY
};
}
function getMousePosition() {
var pos = mousePos;
if (!pos) {
// We haven't seen any movement yet
}
else {
// Use pos.x and pos.y
}
}
})();
আমি যতদূর সচেতন, কোনও ইভেন্ট না দেখে আপনি মাউস পজিশনটি পেতে পারবেন না, এটি যা অন্য স্ট্যাক ওভারফ্লো প্রশ্নের উত্তর দেয় নিশ্চিত করেছে বলে মনে হচ্ছে।
পার্শ্ব দ্রষ্টব্য : আপনি যদি প্রতি 100 মিঃ (10 বার / সেকেন্ড) কিছু করতে চলেছেন তবে সেই ফাংশনে আপনি যে আসল প্রসেসিং করছেন তা খুব, খুব সীমাবদ্ধ রাখার চেষ্টা করুন । এটি ব্রাউজারের জন্য অনেক কাজ, বিশেষত প্রবীণ মাইক্রোসফ্টগুলির জন্য। হ্যাঁ, আধুনিক কম্পিউটারগুলিতে এটি তেমনটি মনে হয় না তবে ব্রাউজারগুলিতে অনেক কিছু চলছে ... সুতরাং উদাহরণস্বরূপ, আপনি সম্ভবত শেষ প্রক্রিয়াটি ট্র্যাক করে রাখতে পারেন এবং হ্যান্ডলারের কাছ থেকে জামিন অবিলম্বে যদি অবস্থানটি না থাকে তবে ' টি পরিবর্তিত হয়েছে।
eventদ্বিতীয় বার যখন ফাংশনটি ডাকা হয় তখন কোনও বস্তু থাকবে না । আপনার ব্যবহারের চেয়ে সম্ভবত কিছু ইভেন্ট শোনা উচিতsetTimeout।