Post

HN
Hacker News

The <Usermedia> HTML Element

پس از راه‌اندازی عنصر <geolocation> در کروم ۱۴۴، کنترل عملکردی بعدی در مجموعه عناصر قابلیت، عنصر HTML <usermedia> است. این عنصر که از کروم ۱۵۱ در دسترس است، مرحله بعدی گذار از درخواست‌های مجوز عمومی به کنترل‌های هدفمند و عملکردی برای دسترسی به جریان‌های دوربین و میکروفون را نشان می‌دهد. با حرکت از درخواست‌های ناشی از اسکریپت به سمت یک تجربه اعلانی و فعال‌شده توسط کاربر، <usermedia> کد تکراری را کاهش می‌دهد، امنیت را بهبود می‌بخشد و یک مسیر بازیابی یکپارچه برای کاربرانی که قبلاً دسترسی را رد کرده‌اند، فراهم می‌کند و به طور مؤثر حفره مجوز قدیمی را حل می‌کند.

عنصر <usermedia> کنترل تخصصی بعدی است که پس از معرفی موفقیت‌آمیز <geolocation> در مجموعه Capability Elements راه‌اندازی می‌شود. این گذار از پیشنهاد اولیه و عمومی <permission> - بخشی از ابتکار PEPC - به مرورگر اجازه می‌دهد تا پیچیدگی‌ها و رفتارهای منحصر به فرد قابلیت‌های سخت‌افزاری مختلف را به طور مؤثرتری مدیریت کند. در حالی که پیشنهاد اولیه عمدتاً بر مدیریت حالت‌های مجوز، مانند اجازه در مقابل رد، متمرکز بود، Capability Elements به عنوان واسطه‌های داده عمل می‌کنند.

عنصر <geolocation> یک شیء موقعیت مکانی را برای سایت شما فراهم می‌کند و <usermedia> کل جریان دسترسی به دوربین و میکروفون را مدیریت می‌کند. این عنصر قصد کاربر را ثبت می‌کند، اعلان مرورگر را مدیریت می‌کند و شیء MediaStream را به برنامه تحویل می‌دهد. این تغییر نیاز به فراخوانی‌های جداگانه getUserMedia() را از بین می‌برد، پیاده‌سازی را ساده می‌کند و تضمین می‌کند که مرورگر سیگنال قابل اعتمادی از قصد کاربر دارد.

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

عنصر <usermedia> با تکیه بر الگوهای ایجاد شده توسط <geolocation> ، چالش‌های اصلی درخواست قابلیت‌های قدرتمند را برطرف می‌کند. درخواست‌های رسانه‌ای به فراخوانی‌های ضروری جاوا اسکریپت متکی هستند که اغلب باعث ایجاد پیام‌های خارج از متن می‌شوند. اگر به طور تصادفی سایت خود را مسدود کنید، معکوس کردن این تصمیم نیاز به پیمایش عمیق در تنظیمات مرورگر دارد، یک "حفره مجوز" که اغلب منجر به رها شدن ویژگی‌ها می‌شود.

عنصر <usermedia> با ارائه موارد زیر این مشکلات را حل می‌کند: