خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه استفاده از رویدادهای اشاره گر در جاوا اسکریپت

چرا فقط به ورودی ماوس یا صفحه نمایش لمسی توجه کنید؟ با استفاده از رویدادهای اشاره گر، هر دو نوع را با همان مقدار تلاش مدیریت کنید.

نکات کلیدی

  • برنامه‌های کاربردی وب باید طیف وسیعی از دستگاه‌های ورودی را پشتیبانی کنند، نه فقط یک ماوس، تا مخاطبان بیشتری را تامین کنند.
  • رویدادهای اشاره گر در جاوا اسکریپت هم رویدادهای ماوس و هم رویدادهای لمسی را مدیریت می کنند و نیاز به پیاده سازی جداگانه آنها را از بین می برند.
  • رویدادهای اشاره گر نام ها و عملکردی مشابه رویدادهای ماوس دارند و به روز رسانی کد موجود برای پشتیبانی از ورودی های لمسی و قلم را آسان می کند.

بسیاری از برنامه های کاربردی وب فرض می کنند که دستگاه اشاره گر کاربر یک ماوس خواهد بود، بنابراین از رویدادهای ماوس برای مدیریت تعاملات استفاده می کنند. با این حال، با ظهور دستگاه های صفحه لمسی، کاربران برای تعامل با وب سایت ها نیازی به ماوس ندارند. پشتیبانی از طیف وسیعی از دستگاه های ورودی برای پاسخگویی به گسترده ترین مخاطبان ضروری است.

جاوا اسکریپت استاندارد جدیدتری به نام رویدادهای اشاره گر دارد. رویدادهای ماوس و لمسی را مدیریت می کند، بنابراین لازم نیست نگران اجرای جداگانه آنها باشید.

رویدادهای اشاره گر چیست؟

رویدادهای اشاره گر یک استاندارد وب هستند که روشی یکپارچه برای مدیریت روش های ورودی مختلف در یک مرورگر وب از جمله ماوس، لمس و قلم را تعریف می کند. این رویدادها روشی سازگار و مستقل از پلتفرم برای تعامل با محتوای وب در دستگاه‌های مختلف ارائه می‌کنند.

به طور خلاصه، رویدادهای اشاره گر به شما کمک می کند تا بدون توجه به منبع، این گروه از تعاملات کاربر را مدیریت کنید.

انواع رویدادهای اشاره گر

نام رویدادهای اشاره گر مشابه رویدادهای ماوس است که ممکن است قبلاً با آنها آشنا باشید. برای هر mouseEvent در جاوا اسکریپت، یک pointerEvent مربوطه وجود دارد. این بدان معنی است که می توانید کد قدیمی خود را مجدداً مشاهده کنید و برای شروع پشتیبانی از ورودی های لمسی و قلم، “موس” را به “اشاره گر” تغییر دهید.

جدول زیر رویدادهای مختلف اشاره گر را در مقایسه با رویدادهای ماوس نشان می دهد:

رویدادهای اشاره گر

رویدادهای ماوس

نشانگر پایین

ماوس پایین

اشاره گر

موس

حرکت اشاره گر

حرکت ماوس

برگ اشاره گر

برگ موش

اشاره گر

ماوس بر

نشانگر

mouesenter

اشاره گر

ماوس کردن

لغو اشاره گر

هیچ یک

gotpointercapture

هیچ یک

از دست رفته است

هیچ یک

می توانید ببینید که سه رویداد اشاره گر اضافی بدون رویدادهای ماوس مربوطه وجود دارد. بعداً با این رویدادها آشنا خواهید شد.

مطلب مرتبط:   چگونه یک برنامه مدیریت فایل ساده در فرم های ویندوز بسازیم

استفاده از رویدادهای اشاره گر در جاوا اسکریپت

شما می توانید از رویدادهای اشاره گر به همان روشی که از رویدادهای ماوس استفاده می کنید استفاده کنید. مانند اکثر مدیریت رویداد، فرآیند معمولاً از این الگو پیروی می کند:

  1. از انتخابگر DOM برای واکشی یک عنصر استفاده کنید.
  2. با استفاده از روش addEventListener، رویداد مورد علاقه خود و یک تابع تماس را مشخص کنید.
  3. از ویژگی‌ها و روش‌های آرگومان callback، یک شی رویداد استفاده کنید.

در اینجا یک مثال با استفاده از رویداد pointermove آورده شده است:

// Get the target element
const target = document.getElementById('target');

// Add an event listener to your target element
target.addEventListener('pointermove', handlePointerMove);

// Function to handle pointer move event
function handlePointerMove(ev) {
    // Handle the event however you want to
    target.textContent = `Moved at x: ${ev.clientX}, y: ${ev.clientY}`;
}

این بلوک کد یک عنصر هدف و یک تابع جاوا اسکریپت را برای مدیریت رویداد pointermove تعریف می کند، سپس از شنونده رویداد جاوا اسکریپت برای پیوست کردن رویداد اشاره گر و تابع به عنصر هدف استفاده می کند.

با استفاده از این کد، زمانی که مکان نما، انگشت یا قلم خود را روی آن حرکت می دهید، عنصری با شناسه «هدف» مختصات اشاره گر را نشان می دهد:

یک کادر سبز رنگ که موقعیت های X و Y یک اشاره گر روی صفحه را نشان می دهد

شما می توانید از سایر رویدادهای اشاره گر به همین روش استفاده کنید.

رویداد لغو اشاره گر

رویداد لغو اشاره گر زمانی فعال می شود که یک رویداد اشاره گر دیگر قبل از اینکه عملیات خود را همانطور که در ابتدا در نظر گرفته شده است کامل کند، قطع شود. به طور معمول، مرورگر هر رویداد اشاره‌گری را که قبلاً در عمل بوده است، لغو می‌کند. دلایل زیادی وجود دارد که چرا یک رویداد لغو اشاره گر ممکن است راه اندازی شود، به عنوان مثال:

  • هنگامی که کاربر هنگام کشیدن یک عنصر روی صفحه، تماس تلفنی یا اعلان وقفه دیگری دریافت می کند.
  • هنگامی که جهت دستگاه تغییر می کند.
  • هنگامی که پنجره مرورگر تمرکز خود را از دست می دهد.
  • هنگامی که کاربر به برگه یا برنامه دیگری سوئیچ می کند.

با رویداد لغو اشاره گر، می توانید این موقعیت ها را هر طور که می خواهید مدیریت کنید. در اینجا یک مثال است:

const target = document.getElementById('target');

target.addEventListener('pointercancel', (event) => {
    // Handle the situation where the pointer cancels. For example, you
    // can release the pointer capture
    target.releasePointerCapture(event.pointerId);
});

گرفتن اشاره گر

گرفتن اشاره گر ویژگی است که به یک عنصر خاص HTML اجازه می دهد تا تمام رویدادهای اشاره گر برای یک اشاره گر خاص را بگیرد و به آنها پاسخ دهد، حتی اگر آن رویدادها خارج از مرز عنصر رخ دهند.

مطلب مرتبط:   5 جایگزین GitHub Copilot که می توانید امروز امتحان کنید

شما می توانید با متد setpointercapture() یک اشاره گر را برای یک عنصر تنظیم کنید و با متد releasepointercapture() یک نشانگر را آزاد کنید.

رویدادهای اشاره گر gotpointercapture و lostpointercapture برای گرفتن اشاره گر مفید هستند.

رویداد gotpointercapture

رویداد gotpointercapture هر زمان که عنصری به جذب اشاره گر دست پیدا کند فعال می شود. شما می توانید از این رویداد برای مقداردهی اولیه حالت برای عنصر HTML خود برای مدیریت رویدادهای اشاره گر استفاده کنید. به عنوان مثال، در یک برنامه طراحی، می توانید از رویداد gotpointercapture برای تنظیم موقعیت اولیه مکان نما استفاده کنید.

رویداد Longpointercapture

رویداد lostpointercapture زمانی فعال می‌شود که عنصری ضبط اشاره‌گر را از دست بدهد. می‌توانید از آن برای پاک کردن یا حذف هر حالتی استفاده کنید که هنگام گرفتن اشاره‌گر توسط عنصر ایجاد شده است. در یک برنامه طراحی، ممکن است بخواهید از lostpointercapture برای پنهان کردن مکان نما استفاده کنید.

ویژگی های رویدادهای اشاره گر

رویدادهای اشاره گر دارای ویژگی هایی هستند که به شما کمک می کند وب سایت خود را تعاملی تر و پاسخگوتر کنید. ویژگی‌های رویدادهای ماوس همان ویژگی‌هایی هستند که در رویدادهای اشاره‌گر می‌بینید، به علاوه برخی ویژگی‌های اضافی. این مقاله برخی از خواص اضافی را توضیح می دهد.

ویژگی pointerId

pointerId یک ویژگی رویداد اشاره گر است که به شما کمک می کند هر ورودی اشاره گر منحصر به فرد مانند قلم، انگشت یا ماوس را شناسایی کنید. هر ورودی اشاره گر یک شناسه منحصر به فرد دریافت می کند (که به طور خودکار توسط مرورگر ایجاد می شود) که به شما امکان می دهد آنها را ردیابی و عملیات انجام دهید.

یک کاربرد عالی برای ویژگی pointerId یک برنامه بازی است که در آن کاربران به طور همزمان از چندین انگشت یا قلم استفاده می کنند. ویژگی pointerId به شما این امکان را می دهد که با اختصاص یک شناسه منحصر به فرد به هر یک از آنها، سطح هر نشانگر را پیگیری کنید. شناسه اولیه به اولین ورودی اشاره گر اختصاص می یابد.

این ویژگی به ویژه برای دستگاه های لمسی مفید است. دستگاه‌هایی که به نشانگرهای ماوس متکی هستند، می‌توانند هر بار فقط یک ورودی اشاره‌گر داشته باشند بدون اینکه دستگاه خارجی به آنها متصل باشد.

مطلب مرتبط:   نحوه طراحی و ایجاد سطوح در PyGame

در اینجا یک مثال ساده است که شناسه هر ورودی اشاره گر را در کنسول چاپ می کند:

const target = document.getElementById('target');

target.addEventListener('pointerdown', (event) => {
    console.log(`Pointer ID: ${event.pointerId}`);
    // Handle the pointer down event for the specific pointerId
});

ویژگی pointerType

ویژگی pointerType به شما کمک می کند تا بین انواع مختلف ورودی اشاره گر تمایز قائل شوید و به شما امکان می دهد عملیات را بر اساس آنها انجام دهید. می توانید بین ماوس، قلم و لمس انگشت تفاوت قائل شوید. این ویژگی فقط می‌تواند یکی از سه ورودی رشته را بگیرد: «موس»، «قلم» یا «لمس». در اینجا یک مثال ساده از نحوه استفاده از ویژگی pointerType آورده شده است:

function handlePointerEvent(event){
    // Using the pointerType property
    switch (event.pointerType) {
    case 'mouse':
        // Handle the situation where the pointing device is a mouse
        console.log(`Mouse Pointer ID: ${event.pointerId}`);
        break;
    case 'pen':
        // Handle the situation where the pointing device is a stylus
        console.log(`Stylus Pointer ID: ${event.pointerId}`);
        break;
    case 'touch':
        // Handle the situation where the pointing device is a finger touch
        console.log(`Touch Pointer ID: ${event.pointerId}`);
        break;
    default:
        // Handle other pointer types or cases
        console.log(`pointerType ${event.pointerType} is not supported`);
        break;
    }
}

// Attach pointer events to elements
element.addEventListener('pointerdown', handlePointerEvent);

ویژگی های عرض و ارتفاع

این ویژگی ها عرض و ارتفاع ناحیه تماس اشاره گر را بر حسب میلی متر نشان می دهند. برخی از مرورگرها از آنها پشتیبانی نمی کنند و مقدار آنها همیشه در چنین مرورگرهایی 1 خواهد بود.

یک مورد خوب برای این ویژگی ها در برنامه هایی است که نیاز به ورودی دقیق دارند یا نیاز به تمایز بین اندازه ورودی های مختلف دارند. به عنوان مثال، در یک برنامه طراحی، ارتفاع و عرض بزرگتر ممکن است به این معنی باشد که کاربر با یک حرکت بزرگتر نقاشی می کند و بالعکس.

اغلب اوقات، شما احتمالاً از ویژگی های عرض و ارتفاع برای رویدادهای لمسی استفاده خواهید کرد.

از رویدادهای اشاره گر برای فراگیری بیشتر استفاده کنید

رویدادهای اشاره گر به شما این امکان را می دهند که طیف وسیعی از دستگاه ها و انواع ورودی را بدون تحمل استرس زیاد پاسخ دهید. همیشه باید از آنها در برنامه های خود استفاده کنید تا با استانداردهای مدرن مطابقت داشته باشند و به ساخت وب بهتر کمک کنند.