چه چیزی در KeyboardEvents جدید است؟ کلیدها و رمزها!

در چند نسخه گذشته کروم دو افزوده به KeyboardEvent s دیده شده است که به عنوان پارامتری به شنوندگان رویداد keydown ، keypress و keyup ارسال می‌شوند. هم ویژگی code (افزوده شده در Chrome 48 ) و هم ویژگی key (افزوده شده در Chrome 51 ) به توسعه دهندگان راه ساده ای برای دریافت اطلاعاتی می دهد که در غیر این صورت استفاده از ویژگی های قدیمی دشوار خواهد بود.

ویژگی کد

ابتدا ویژگی code است. این به رشته‌ای تنظیم می‌شود که نشان‌دهنده کلیدی است که برای ایجاد KeyboardEvent فشار داده شده است، بدون در نظر گرفتن طرح‌بندی صفحه‌کلید فعلی (مثلاً QWERTY در مقابل Dvorak )، محلی (مثلاً انگلیسی در مقابل فرانسوی)، یا هر کلید اصلاح‌کننده‌ای. . این زمانی مفید است که برای شما مهم است که کدام کلید فیزیکی فشار داده شده است، نه اینکه با کدام کاراکتر مطابقت دارد. به عنوان مثال، اگر در حال نوشتن یک بازی هستید، ممکن است بخواهید مجموعه خاصی از کلیدها را برای حرکت دادن بازیکن در جهات مختلف بخواهید، و این نقشه برداری باید مستقل از چیدمان صفحه کلید باشد.

ویژگی کلیدی

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

این در عمل به چه معناست؟

برای ارائه یک مثال ملموس، فرض کنید کاربر شما از صفحه کلید ایالات متحده با طرح صفحه کلید QWERTY استفاده می کند. با فشار دادن کلید فیزیکی Q روی آن صفحه کلید، یک KeyboardEvent با ویژگی code تنظیم شده روی "KeyQ" ایجاد می شود. این بدون در نظر گرفتن طرح‌بندی صفحه‌کلید، و صرف‌نظر از هر کلید اصلاح‌کننده دیگری صادق است. برای مقایسه، در یک صفحه کلید فرانسوی ( AZERTY ) این کلید همچنان دارای code "KeyQ" است، حتی اگر حرف چاپ شده روی کلاهک کلید "a" باشد. با فشار دادن کلید فیزیکی Q در همان صفحه کلید ایالات متحده، معمولاً یک KeyboardEvent با key تنظیم شده روی "q" (بدون کلیدهای اصلاح کننده)، یا "Q" (با Shift یا CapsLock) یا "œ" (در OS X، با Alt). در یک صفحه کلید فرانسوی AZERTY، همین کلید یک "a" (یا "A" با Shift یا CapsLock) ایجاد می کند. و برای دیگر طرح‌بندی‌های صفحه‌کلید، مقدار key می‌تواند "й" ، "ض" ، "ㅂ" ، "た" یا کاراکتر دیگری باشد. با بررسی مجدد مثال بازی قبلی، اگر می‌خواهید بازی شما از کلیدهای WASD برای حرکت استفاده کند، می‌توانید از ویژگی code استفاده کنید و "KeyW" ، "KeyA" ، "KeyS" و "KeyD" را بررسی کنید. این برای همه صفحه‌کلیدها و همه طرح‌بندی‌ها کار می‌کند - حتی صفحه‌کلیدهای AZERTY که موقعیت کلیدهای "w" و "z" را عوض می‌کنند.

کیبوردهای مجازی

متوجه خواهید شد که تا کنون، ما بر روی رفتار با فرض یک صفحه کلید فیزیکی تمرکز کرده‌ایم. در مورد کاربرانی که روی صفحه کلید مجازی یا یک دستگاه ورودی جایگزین تایپ می کنند چطور؟ مشخصات، راهنمایی رسمی برای ویژگی code ارائه می دهد. به طور خلاصه، انتظار می‌رود صفحه‌کلید مجازی که طرح‌بندی یک صفحه‌کلید استاندارد را تقلید می‌کند، منجر به تنظیم ویژگی code مناسب شود، اما صفحه‌کلیدهای مجازی که از طرح‌بندی‌های غیر سنتی استفاده می‌کنند ممکن است منجر به تنظیم نشدن code شوند.

همه چیز برای ویژگی key ساده تر است، که باید انتظار داشته باشید که بر اساس کاراکتری که کاربر (به طور مجازی) تایپ کرده است، روی رشته ای تنظیم شود.

آن را امتحان کنید

گری کاچمارچیک یک نسخه ی نمایشی فوق العاده برای تجسم تمام ویژگی های مرتبط با KeyboardEvent s گردآوری کرده است:

ویژگی های KeyboardEvent

پشتیبانی از مرورگرهای متقابل

پشتیبانی از ویژگی code ، تا زمان نگارش این مقاله، محدود به Chrome 48+، Opera 35+ و Firefox 44+ است. ویژگی key در Firefox 44+، Chrome 51+، و Opera 38+، با پشتیبانی جزئی در Internet Explorer 9+ و Edge 13+ پشتیبانی می‌شود.