بهترین روش های دسترسی برای برنامه های کاربردی یک صفحه (SPA)


کاربران وب امروزی انتظار دارند تجربیات آنلاین آنها سریع، روان و جذاب باشد. برنامه های کاربردی یک صفحه (SPA) با ارائه عملکردهای نرم و شبیه به برنامه که تعامل کاربر را بدون بارگیری مجدد صفحه افزایش می دهد، این انتظارات را برآورده می کند.
با این حال، ماهیت پویا SPA ها چالش های دسترسی را ارائه می دهد که ممکن است کاربران دارای معلولیت، به ویژه کسانی که به فناوری های کمکی متکی هستند را حذف کند. در این مقاله، بهترین روشها برای مقابله با این چالشها را برای اطمینان از قابلیت استفاده بهتر برای همه کاربران، صرف نظر از تواناییهایشان، یاد خواهید گرفت.
SPA ها چیست؟
تصور کنید در حال خواندن کتابی هستید که به جای ورق زدن، متن و تصاویر به سادگی در صفحه ای که قبلاً در آن هستید تغییر می کند. SPAها به طور مشابه در وب با به روز رسانی محتوا در زمان واقعی بدون بارگیری مجدد کل صفحه کار می کنند. مانند استفاده از برنامهای مانند Google Maps در تلفن هوشمند خود است که میتوانید بدون راهاندازی مجدد آن را بزرگنمایی کنید، مکانها را جستجو کنید یا نماها را تغییر دهید.
برای درک بهتر این موضوع، به وب سایت های سنتی مانند یک سیستم کتابخانه فکر کنید. هر بار که به یک کتاب جدید (صفحه وب) نیاز دارید، باید به میز (سرور) مراجعه کنید، آن را درخواست کنید و منتظر بمانید تا کتابدار (فرایند سرور) آن را پیدا کند و برای شما بیاورد. این فرآیند هر بار که شما درخواست یک کتاب جدید میکنید اتفاق میافتد، که میتواند زمانبر و زمانبر باشد.
در مقابل، SPA ها مانند داشتن یک سبد کتاب با شما عمل می کنند که به طور جادویی هر کتابی را که می خواهید بخوانید مستقیماً از روی میز بدون نیاز به رفت و برگشت دریافت می کند. هنگامی که در ابتدا در میز "چک این" می شوید (زمانی که SPA برای اولین بار بارگیری می شود)، همه تراکنش های دیگر به صورت نامرئی و فوری انجام می شوند و به شما امکان می دهند از یک تجربه خواندن (مرور) مداوم بدون وقفه لذت ببرید.
چالش های دسترسی در SPA ها
هنگامی که یک SPA می سازید، یک تجربه پویا و تعاملی ایجاد می کنید که می تواند روان بودن و پاسخگویی یک برنامه دسکتاپ را تقلید کند. با این حال، این معماری وب مدرن چالش های دسترسی منحصر به فردی را به همراه دارد که می تواند بر نحوه تعامل برخی از کاربران با برنامه شما تأثیر بگذارد. اجازه دهید برخی از آنها را مرور کنیم تا آنها را از دیدگاه کاربر درک کنیم.
1. به روز رسانی محتوای پویا
در وبسایتهای سنتی، بارگذاری مجدد صفحه، فناوریهای کمکی را برای اسکن مجدد صفحه فعال میکند و کاربران را از محتوای جدید آگاه میکند. SPA ها، با استفاده از چارچوب های جاوا اسکریپت، بخش هایی از صفحه را در زمان واقعی واکشی و به روز می کنند. این مکانیسم رابط کاربری را چابک نگه میدارد اما بهطور خودکار تغییرات را به صفحهخوانها یا سایر ابزارهای کمکی نشان نمیدهد.
کاربری را در نظر بگیرید که بینایی ضعیفی دارد و برای پیمایش در یک سایت خرید به یک صفحه خوان متکی است. آنها برای یک محصول روی " گفت ن به سبد خرید" کلیک می کنند، که به صورت پویا نماد سبد خرید را در صفحه به روز می کند تا یک مورد را نشان دهد. با این حال، اگر آپشن های مناسب ARIA live در SPA اجرا نشود، ممکن است صفحهخوان این بهروزرسانی را اعلام نکند. این باعث میشود کاربر مطمئن نباشد که آیا اقدامش موفق بوده است و ممکن است منجر به "کلیکهای خشمگین" و یک تجربه خرید ناامیدکننده شود.
2. مدیریت تمرکز
حفظ جریان تمرکز منطقی تضمین میکند که کاربران صفحهکلید و صفحهخوان میتوانند محتوای وب را بهطور مؤثر هدایت کنند. ناوبری وب سنتی ذاتاً با هر بار بارگذاری صفحه جدید، تمرکز را تغییر می دهد و یک مسیر ناوبری واضح را ارائه می دهد. SPA ها می توانند با به روز رسانی محتوا بدون این انتقال تمرکز طبیعی، این جریان را مختل کنند، که منجر به سردرگمی و تجربه کاربری غیرقابل دسترس می شود.
قطعه کد جاوا اسکریپت زیر باز و بسته شدن یک پنجره مودال را نشان می دهد:
function openModal() { document.getElementById('myModal').style.display = 'block'; document.getElementById('closeModalButton').focus(); }
function closeModal() { document.getElementById('myModal').style.display = 'none'; }
در حالی که فوکوس به درستی به دکمه بستن مدال هنگام باز شدن منتقل می شود، پس از بسته شدن مدال به عنصر مربوطه باز نمی گردد و کاربران صفحه کلید از موقعیت فعلی خود در صفحه مطمئن نیستند.
از منظر کاربر، مودال بسته میشود اما فوکوس «از دست رفته» به نظر میرسد، احتمالاً به این دلیل که هنوز روی دکمه بستن پنهان است. به این ترتیب، آنها ممکن است برای بازگشت به محتوای اصلی تلاش کنند، که منجر به ناامیدی و تجربه تعامل ضعیف می شود.
3. مدیریت تاریخچه مرورگر
مکانیسم تاریخچه مرورگر به طور خودکار هر بارگذاری صفحه را در برنامه های چند صفحه ای سنتی ردیابی می کند. از طرف دیگر، SPA ها معمولاً یک بار بارگیری می شوند و چارچوب جاوا اسکریپت تمام تغییرات محتوای بعدی را مدیریت می کند. این منجر به تجربه کاربری میشود که در آن دکمه برگشت همیشه آنطور که انتظار داریم که عمل نمیکند، یا اصلاً به عقب برنمیگردد یا چندین مرحله از همه حالتهای بارگذاری شده پویا میپرد.
یک مثال عملی زمانی است که کاربر مقالهای را در یک پلتفرم خبری مبتنی بر SPA میخواند و از طریق پیوندهای داخلی روی چندین داستان مرتبط کلیک میکند. کاربر در انتظار بازگشت به مقاله اصلی، روی دکمه بازگشت مرورگر کلیک می کند اما به طور غیرمنتظره ای به صفحه اصلی باز می گردد، نه مقاله اصلی.
بیایید یک قطعه کد را ببینیم که نمونهای از این است:
function changeView(itemId) { const contentView = document.getElementById('contentView'); fetch(`/api/content/${itemId}`) .then(response => response.json()) .then(content => { contentView.innerHTML = content.html; }); }
در اینجا، مشاهده محتوا بر اساس انتخاب کاربر به روز می شود، اما تاریخچه مرورگر به روز نمی شود. این نظارت به این معنی است که با فشار دادن دکمه بازگشت پس از چندین انتخاب، تمام حالت های محتوای میانی رد می شود و ممکن است کاربر را به طور کلی از SPA خارج کند.
این تجربه ناوبری ناسازگار می تواند کاربران را منحرف و ناامید کند، به ویژه آنهایی که برای درک مکان خود در یک برنامه به پیمایش صفحه کلید و نشانه های استاندارد مرورگر متکی هستند. برای کاربران دارای ناتوانی های شناختی، چنین رفتار غیرمنتظره ای می تواند استفاده موثر از وب سایت را دشوار یا غیرممکن کند.
4. عملکرد بار اولیه
معماری SPA ها حول مفهوم بارگیری تمام یا بیشتر دارایی های برنامه - اسکریپت ها، شیوه نامه ها و فایل های خاص چارچوب- در یک بسته بزرگ متمرکز است. این رویکرد تضمین میکند که پس از بارگذاری اولیه، تمام تعاملات بعدی به حداقل واکشی دادههای اضافی نیاز دارند و تجربه کاربر را افزایش میدهند. با این حال، بارگذاری اولیه می تواند قابل توجه باشد و فایل های جاوا اسکریپت بزرگ و سایر منابع را قبل از اینکه برنامه قابل استفاده شود، بکشد.
تصور کنید یک کاربر برای اولین بار از یک SPA با یک دستگاه تلفن همراه با اتصال داده محدود بازدید می کند. SPA سعی می کند 100 مگابایت جاوا اسکریپت، CSS و فایل های رسانه ای را قبل از شروع به کار بارگیری کند. اگر این فایلها بهینه نشوند یا به قطعات قابل مدیریت تقسیم نشوند، ممکن است کاربر با زمان انتظار طولانی یا حتی با خطای مهلت زمانی مواجه شود که تعامل بیشتر را از بین میبرد.
این تأخیر اولیه میتواند منجر به نرخ پرش بالا شود، زیرا بازدیدکنندگانی که برای اولین بار میآیند ممکن است منتظر تکمیل بارگذاری نباشند. این به ویژه برای کاربران مناطقی با سرعت اینترنت پایین تر یا در شبکه های تلفن همراه چالش برانگیز است، که ممکن است SPA عملاً غیرقابل دسترسی باشد.
بهترین روش ها برای دسترسی در برنامه های تک صفحه ای
برای اطمینان از در دسترس بودن SPAها و ارائه یک تجربه کاربری مثبت برای همه، اجرای بهترین شیوه های خاص بسیار مهم است. این استراتژی ها نه تنها قابلیت استفاده برای افراد دارای معلولیت را افزایش می دهد، بلکه کیفیت کلی برنامه را نیز بهبود می بخشد.
1. نقش ها و ویژگی های ARIA مناسب را اجرا کنید
نقشها و آپشن های ARIA شکاف بین عناصر سنتی HTML و محتوای پیچیده و پویا معمولی SPA را پر میکنند. آنها نقشها، حالتها و آپشن های عناصر UI را به کاربران فناوری کمکی منتقل میکنند تا آنها بفهمند هر عنصر چه کاری انجام میدهد و چگونه با آن تعامل داشته باشند.
چه باید کرد:
از aria-live="polite"
برای محتوایی که بهطور خودکار بهروزرسانی میشوند، مانند پیامهای چت یا نمادهای سهام، استفاده کنید تا مطمئن شوید بهروزرسانیها بدون ایجاد وقفه در کاربر اعلام میشوند.
aria-expanded
به منوهای کشویی برای باز یا بسته بودن آنها اعمال کنید و برای نشان دادن عناصر فعال در برگهها، aria را انتخاب کنید.
از aria-label
و aria-labelledby
برای ارائه نامهای قابل دسترسی برای عناصر استفاده کنید، بهویژه زمانی که برچسبهای بصری استاندارد نیستند یا عنصر به زمینه اضافی نیاز دارد.
2. از ناوبری صفحه کلید قوی اطمینان حاصل کنید
دسترسی به صفحهکلید برای کاربران دارای اختلالات حرکتی که به صفحهکلید یا سایر دستگاههای ورودی متکی هستند ضروری است. یک وب سایت کاملاً قابل پیمایش با صفحه کلید یک نیاز اساسی برای دسترسی است.
چه باید کرد:
اطمینان حاصل کنید که کنترلهای سفارشی و پنجرههای مدال فوکوس را به ترتیب منطقی گرفته و رها میکنند. تله گذاری فوکوس را در دیالوگ های مدال پیاده سازی کنید تا وقتی صفحه کلید باز است، تمرکز کاربر را در داخل دیالوگ حفظ کنید.
پیوندهای «پرش به محتوا» را در ابتدای صفحه ارائه دهید تا به کاربران اجازه دهید پیوندهای پیمایش تکراری را دور بزنند.
میانبرهای صفحه کلید را برای اقدامات متداول ارائه دهید، که می تواند کارایی ناوبری صفحه کلید را به میزان قابل توجهی افزایش دهد.
3. وضعیت و تاریخچه برنامه را با دقت مدیریت کنید
مدیریت صحیح وضعیت و تاریخچه به کاربران کمک می کند تا بفهمند در کجای یک برنامه قرار دارند و آن را با موفقیت هدایت کنند. این امر به ویژه برای کاربران دارای اختلالات شناختی و کسانی که به الگوهای ناوبری آشنای وب متکی هستند بسیار مهم است.
چه باید کرد:
برای مدیریت تاریخچه مرورگر از history.pushState
و history.popState
استفاده کنید. این رویکرد به کاربران اجازه میدهد تا با دکمههای عقب و جلو مرورگر در یک SPA حرکت کنند، به گونهای که یک سایت چند صفحهای را تقلید کند.
اطمینان حاصل کنید که وقتی کاربر به عقب یا جلو حرکت می کند، نمای صفحه یا وضعیت به طور دقیق بازیابی می شود، از جمله فوکوس، موقعیت اسکرول، و محتوای بارگذاری شده پویا.
4. زمان بارگذاری اولیه را بهینه کنید
زمانهای بارگذاری طولانی میتواند کاربران، از جمله آنهایی که دارای ناتوانیهای شناختی هستند و ممکن است سایت را پاسخگو نمیدانند، منصرف کند. برای جلوگیری از این امر، بهینه سازی زمان بارگذاری صفحه برای افزایش دسترسی و حفظ کاربر بسیار مهم است.
چه باید کرد:
فایل های جاوا اسکریپت و CSS را به حداقل رسانده و فشرده کنید. از قالبهای تصویری کارآمد و مدرن مانند WebP برای گرافیکهایی که نیاز به بارگذاری سریع دارند، استفاده کنید.
اسکریپت ها را به صورت ناهمزمان بارگیری کنید تا از مسدود شدن رندر محتوای مهم جلوگیری کنید. دارایی های حیاتی را اولویت بندی کنید و منابع بحرانی کمتر را تا پس از بارگذاری اولیه به تاخیر بیندازید.
5. از تقویت پیشرونده استفاده کنید
ارتقای پیشرو بر ارائه محتوا و عملکرد اصلی به همه کاربران، صرف نظر از قابلیتها یا تنظیمات مرورگرشان، تمرکز دارد. این رویکرد دسترسی را برای کاربران با فناوری های قدیمی تر یا کسانی که جاوا اسکریپت را غیرفعال می کنند تضمین می کند.
چه باید کرد:
عملکردهای اصلی را با استفاده از HTML ساده بسازید و با CSS و جاوا اسکریپت بهبود دهید. اطمینان حاصل کنید که هر اقدام کاربر که اطلاعات یا خدمات مهمی را ارائه می دهد بدون جاوا اسکریپت کار می کند.
برنامه خود را با خاموش بودن جاوا اسکریپت آزمایش کنید. اطمینان حاصل کنید که کاربران همچنان می توانند به تمام محتوای مهم دسترسی داشته باشند و وظایف ضروری را انجام دهند.
6. آزمایش دسترسی منظم را انجام دهید
آزمایش مداوم به شناسایی و رفع موانع دسترسی در مراحل اولیه و در طول فرآیند توسعه محصول کمک می کند. این عمل انطباق با استانداردهای دسترسی را تضمین می کند و تجربه کلی کاربر را بهبود می بخشد.
چه باید کرد:
ابزارهایی مانند WAVE، Google Lighthouse یا ARIA را در خطوط لوله توسعه و CI/CD خود ادغام کنید تا به طور خودکار مشکلات رایج دسترسی را پیدا کنید.
کاربران واقعی، به ویژه کسانی که از فناوری های کمکی استفاده می کنند، در جلسات تست قابلیت استفاده درگیر کنید. بازخورد آنها در شناسایی مسائل عملی که ابزارهای خودکار ممکن است از دست بدهند بسیار ارزشمند است.
برنامه خود را به طور مرتب با صفحه خوان های محبوب مانند NVDA، JAWS یا VoiceOver آزمایش کنید تا متوجه شوید که برنامه شما چگونه برای کاربران کم بینا به نظر می رسد.
نتیجه گیری
به عنوان یک توسعه دهنده یا طراح، باید راه هایی برای ادغام عملکردهای پیشرفته با شیوه های دسترسی ضروری در پروژه های وب خود بیابید. در حالی که این راهنما نقطه شروع خوبی را ارائه می دهد، چیزهای بیشتری برای یادگیری در مورد ایجاد SPAهای کاملاً قابل دسترس وجود دارد.
بیشتر بخوانید
برای تحلیل عمیقتر، کاوش در منابعی مانند دستورالعملهای دسترسی به محتوای وب (WCAG) و راهنمای شیوههای تألیف ARIA را در نظر بگیرید. اینها میتوانند بینشها و دستورالعملهای گستردهای را ارائه دهند تا به شما کمک کنند تا اطمینان حاصل کنید که برنامههای شما استانداردهای قانونی را برآورده میکنند و واقعاً برای همه کاربران قابل دسترسی هستند.
ارسال نظر