منتشر شده: ۱۳ نوامبر ۲۰۲۴
مگر اینکه خلاف آن ذکر شده باشد، تغییرات زیر در جدیدترین نسخه کانال بتای کروم برای اندروید، ChromeOS، لینوکس، macOS و ویندوز اعمال میشود. برای کسب اطلاعات بیشتر در مورد ویژگیهای ذکر شده در اینجا، از طریق لینکهای ارائه شده یا از لیست موجود در ChromeStatus.com اقدام کنید. کروم ۱۳۲ از ۱۳ نوامبر ۲۰۲۴ در نسخه بتا است. میتوانید آخرین نسخه را برای دسکتاپ از Google.com یا برای اندروید از فروشگاه گوگل پلی دانلود کنید.
سیاساس
این نسخه دو ویژگی جدید CSS اضافه میکند.
موقعیتیابی لنگر در CSS: اجازه دادن به anchor-size() در ویژگیهای inset و margin
در ابتدا، anchor-size() فقط در ویژگیهای اندازهگیری مجاز بود. این مشخصات تغییر یافت تا تابع anchor-size() در درجها و حاشیهها نیز مجاز باشد.
حالتهای نوشتن از پهلو در CSS
پشتیبانی از کلمات کلیدی sideways-rl و sideways-lr برای ویژگی writing-mode CSS. sideways-rl و sideways-lr برای نوشتن متن غیر CJK به صورت عمودی مفید هستند. آنها برخلاف vertical-rl و vertical-lr رفتارهای مطلوبی برای زبانهای CJK ندارند.
API های وب
ضبط تمام صفحه نمایش
با استفاده از getAllScreensMedia() از تمام صفحات نمایش متصل به دستگاه، فیلم بگیرید.
فراخوانی چندین باره تابع getDisplayMedia() نیازمند چندین حرکت کاربر است، کاربر را با انتخاب صفحه بعدی در هر بار مواجه میکند و به برنامه تضمین نمیدهد که همه صفحات انتخاب شدهاند. متد getAllScreensMedia() در همه این موارد بهبود مییابد.
این ویژگی فقط روی دسکتاپ ارائه میشود.
رویدادهای تغییر وضعیت دیالوگ
دانستن زمان باز و بسته شدن عناصر <dialog> مفید است، و popover از قبل دارای ToggleEvent است که هنگام باز یا بسته شدن یک popover ارسال میشود. پیش از این، برای تشخیص زمان باز شدن یک <dialog> باید یک مشاهدهگر جهش ثبت میکردید تا باز بودن آن را بررسی کند، با این حال، این کار بسیار زیادی است که در آن یک رویداد آسانتر خواهد بود.
این تغییر شامل همان ToggleEvent است که popoverها ارسال میکنند، اما برای عناصر <dialog> : وقتی showModal یا show فراخوانی میشوند، <dialog> یک ToggleEvent با newState=open ارسال میکند. وقتی یک <dialog> بسته میشود (با استفاده از فرم، دکمه یا closewatcher) باید یک ToggleEvent با newState=closed ارسال کند.
ضبط عنصر
با توجه به اینکه یک MediaStreamTrack ویدیویی از طریق روشهای از پیش موجود برای شروع ضبط تب به دست آمده است، Element Capture اجازه میدهد تا مسیر را طوری تغییر دهید که فقط یک زیردرخت از DOM را که از یک عنصر معین شروع میشود، ضبط کند.
این API شباهتهایی به Region Capture API دارد، اما انعطافپذیری بیشتری برای برنامهها فراهم میکند، زیرا محتوای مسدودکننده و مسدودشده هر دو از ضبط حذف میشوند.
ویژگیهای احراز هویت FedCM
این مجموعه شامل چند ویژگی است که میتوانند توسط ارائهدهندگان هویت (IdP) برای پیادهسازی جریانهای مجوز مانند اجازه دادن به کاربر برای اعطای دسترسی به تقویم خود به یک طرف متکی (RP) استفاده شوند. به طور خاص:
- IdP باید بتواند یک درخواست مجوز سفارشی (continuation API) نمایش دهد.
- RP به یک روش توسعهپذیر برای ارتباط با IdP نیاز دارد تا آنچه را که میخواهد به آن دسترسی داشته باشد (API پارامترها) به او اطلاع دهد.
- RP باید بتواند متن مربوط به اشتراکگذاری IdP «نام، آدرس ایمیل و تصویر پروفایل» را سفارشیسازی یا حذف کند، زیرا در این شرایط، آنها اطلاعات متفاوتی (فیلدهای API) را درخواست میکنند.
- ممکن است IdP بخواهد از یک نقطه پایانی متفاوت برای پیادهسازی جریان مجوز (چندین configURL) استفاده کند.
- ممکن است برخی حسابها فقط واجد شرایط یکی از جریانهای احراز هویت و مجوز باشند و بنابراین باید راهی برای نمایش حسابهای مختلف در دو جریان وجود داشته باشد (API برچسبهای حساب).
API حالت FedCM و API استفاده از حسابهای دیگر
دو افزونه جدید برای FedCM:
- حالت : حالت
activeبه وبسایتها اجازه میدهد تا FedCM را درون یک کلیک دکمه (مثلاً کلیک روی دکمه ورود به IdP ) فراخوانی کنند، که مستلزم آن است که FedCM تضمین کند که همیشه با یک رابط کاربری قابل مشاهده پاسخ میدهد. فراخوانی API FedCM در حالت فعال، کاربران را هنگام خروج از سیستم به ارائهدهنده هویت (IdP) هدایت میکند. همچنین، از آنجا که حالت فعال درون یک اشاره صریح کاربر فراخوانی میشود، رابط کاربری در مقایسه با رابط کاربری حالت غیرفعال (که نیازی به اشاره کاربر ندارد و میتواند در هنگام بارگذاری صفحه فراخوانی شود) برجستهتر (مثلاً متمرکز و مودال) است. - استفاده از حساب کاربری دیگر : با این افزونه، یک IdP میتواند به کاربران اجازه دهد تا به حسابهای کاربری دیگر وارد شوند.
واکشی: Request.bytes() و Response.bytes()
یک متد bytes() به رابطهای Request و Response اضافه کنید، که یک promise را برمیگرداند که با یک Uint8Array حل میشود. در حالی که Request و Response یک متد arrayBuffer() دارند، نمیتوانید مستقیماً از یک بافر بخوانید. برای خواندن آن باید یک view مانند Uint8Array ایجاد کنید. متد bytes() ارگونومی دریافت بدنه Request و Response را بهبود میبخشد.
دسترسی به سیستم فایل برای اندروید و وب ویو
این API به توسعهدهندگان امکان میدهد تا برنامههای قدرتمندی بسازند که با سایر برنامههای (غیر وب) روی دستگاه کاربر با استفاده از سیستم فایل دستگاه تعامل داشته باشند. پس از اینکه کاربر به یک برنامه وب دسترسی میدهد، این API به برنامه اجازه میدهد تا تغییرات را مستقیماً در فایلها و پوشههای انتخاب شده توسط کاربر بخواند یا ذخیره کند. این API فراتر از خواندن و نوشتن فایلها، امکان باز کردن یک دایرکتوری و شمارش محتویات آن و همچنین ذخیره شناسههای فایل و دایرکتوری در IndexedDB را برای دسترسی مجدد به همان محتوا در آینده فراهم میکند.
دسترسی به سیستم فایل در کروم ۸۶ برای دسکتاپ ارائه شد و در کروم ۱۳۲ برای اندروید و وبویو نیز در دسترس است.
نادیده گرفتن Strict-Transport-Security برای localhost
هدرهای پاسخ Strict-Transport-Security (STS) میتوانند برای سرورهای وب محلی مشکلاتی ایجاد کنند، زیرا STS در سطح میزبان و در تمام پورتها اعمال میشود. این امر باعث ایجاد مشکلات سازگاری برای توسعهدهندگان وب که به صورت محلی آزمایش میکنند، میشود. همچنین بر کاربران نهایی که از بستههای نرمافزاری استفاده میکنند که معمولاً سرورهای وب محلی را به دلایل زودگذر راهاندازی میکنند، تأثیر میگذارد. به عنوان مثال، ارتباط یک توکن احراز هویت از یک ورود به وب به یک بسته نرمافزاری محلی. اگر یک شنونده محلی Strict-Transport-Security روی پاسخ محلی تنظیم کند، صرف نظر از پورت، برای همه درخواستهای محلی بعدی اعمال میشود.
کروم ۱۳۲ این مشکل را با نادیده گرفتن هدرهای Strict-Transport-Security در پاسخهای دریافتی از آدرسهای محلی (localhost) حل میکند.
محفظههای اسکرول قابل فوکوس روی کیبورد
انتشار این ویژگی (از کروم ۱۳۰) به دلیل پسرفت در دسترسی متوقف شد. این مشکل برطرف شده و این ویژگی همچنان با کروم ۱۳۲ در حال انتشار است.
سیاست مجوزهای API توکن دولتی خصوصی، لیست مجوزهای پیشفرض
دسترسی به API توکنهای حالت خصوصی توسط ویژگیهای سیاست مجوزها محدود شده است. کروم ۱۳۲ فهرست مجوزهای پیشفرض را برای هر دو ویژگی private-state-token-issuance و private-state-token-redemption از self به * (wildcard) بهروزرسانی میکند.
PushMessageData::bytes()
رابط کاربری PushMessageData از رابط کاربری Body تقلید میکند، که اوایل امسال با یک متد جدید bytes() اصلاح شد، و از این اصل پیروی میکند که APIها عموماً باید بافرهای بایت را به صورت Uint8Arrays ارائه دهند. کروم ۱۳۲ با ارائه دسترسی bytes() در رابط کاربری PushMessageData ، خود را با رابط کاربری Body وفق میدهد.
کوئریهای ذخیره شده در sharedStorage.selectURL
sharedStorage.selectURL() اکنون امکان ذخیره و استفاده مجدد از کوئریها را بر اساس هر صفحه فراهم میکند، که در آن دو بودجه بارگذاری هر صفحه، اولین باری که یک کوئری ذخیره شده اجرا میشود، شارژ میشوند اما برای اجراهای بعدی کوئری ذخیره شده در طول همان بارگذاری صفحه، شارژ نمیشوند. این کار با یک پارامتر savedQuery در گزینههای selectURL() که کوئری را نامگذاری میکند، انجام میشود.
استثنا برای پنجرههای بازشو و دیالوگها در اسناد غیرفعال اعمال میشود
قبلاً فراخوانی showPopover() یا showModal() روی یک پنجره یا کادر محاورهای که در یک سند غیرفعال قرار دارد، بیصدا با شکست مواجه میشد. هیچ استثنایی ایجاد نمیشد، اما از آنجایی که سند غیرفعال است، هیچ پنجره یا کادر محاورهای نمایش داده نمیشد. از کروم ۱۳۲، این موقعیتها اکنون InvalidStateError ایجاد میکنند.
API سیگنال WebAuthn
به طرفین متکی به WebAuthn اجازه میدهد تا اطلاعات مربوط به اعتبارنامههای موجود را به ارائهدهندگان ذخیرهسازی اعتبارنامه ارسال کنند، به طوری که اعتبارنامههای نادرست یا باطلشده بتوانند از ارائهدهنده و رابط کاربری سیستم بهروزرسانی یا حذف شوند.
درباره API سیگنال برای کلیدهای عبور در کروم دسکتاپ بیشتر بدانید.
WebGPU: ترکیب بافتهای شناور ۳۲ بیتی
ویژگی پردازنده گرافیکی float32-blendable بافتهای پردازنده گرافیکی با فرمتهای r32float ، rg32float و rgba32float را قابل ترکیب میکند.
WebGPU: نمایش اطلاعات GPUAdapterInfo از GPUDevice
ویژگی GPUDevice adapterInfo همان GPUAdapterInfo به عنوان شیء GPUAdapter در معرض نمایش قرار میدهد.
WebGPU: استفاده از نمای بافت
یک فیلد اختیاری به ایجاد نمای بافت WebGPU اضافه میکند تا زیرمجموعهای از پرچمهای استفاده را از بافت منبع درخواست کند.
به طور پیشفرض، استفاده از نمای بافت از بافت منبع به ارث میرسد، اما قالبهای نمایشی وجود دارند که میتوانند با مجموعه کامل کاربردهای به ارث برده شده ناسازگار باشند. افزودن یک فیلد استفاده به ایجاد نمای بافت به کاربر این امکان را میدهد که زیرمجموعهای از کاربردهای بافت منبع را درخواست کند که با قالب نمایش معتبر بوده و مختص استفاده مورد نظر آنها از نمای بافت باشد.
پیادهسازیهای WebGPU همچنین میتوانند ایجاد منابع سطح پایین را بهینه کرده و هنگام استفاده از نماهایی با پرچمهای استفاده تخصصیتر، عملکرد را بهبود بخشند.
آزمایشهای منشأ جدید
در کروم ۱۳۲ میتوانید در آزمایشهای جدید زیر شرکت کنید.
Document-Isolation-Policy
Document-Isolation-Policy به یک سند اجازه میدهد تا بدون نیاز به استقرار COOP یا COEP و صرف نظر از وضعیت crossOriginIsolation صفحه، crossOriginIsolation برای خود فعال کند. این سیاست توسط جداسازی فرآیند پشتیبانی میشود. علاوه بر این، زیرمنابع غیر CORS بین مبدا سند یا بدون اعتبارنامه بارگذاری میشوند یا نیاز به داشتن یک سرآیند CORP دارند.
نکات کامپایل صریح با نظرات جادویی
این ویژگی به شما امکان میدهد اطلاعاتی در مورد اینکه کدام توابع باید به صورت سریع (Early Parse) تجزیه و کامپایل شوند، در فایلهای جاوا اسکریپت ضمیمه کنید. این اطلاعات به صورت کامنتهای جادویی (Magic Comments) کدگذاری میشوند.
منسوخها و حذفها
این نسخه از کروم، منسوخها و حذفهای زیر را معرفی میکند. برای مشاهدهی فهرست منسوخهای برنامهریزیشده، منسوخهای فعلی و حذفهای قبلی، به ChromeStatus.com مراجعه کنید.
این نسخه از کروم دو ویژگی را حذف کرده است.
navigator.storage دیگر یک EventTarget نیست
navigator.storage برای رویداد Storage Pressure به یک EventTarget تبدیل شد، که هرگز از مرحله نمونه اولیه فراتر نرفت. این کد مرده در حال حذف شدن است و در نتیجه، navigator.storage دیگر EventTarget گسترش نخواهد داد.
حذف API های تمام صفحه HTMLVideoElement با پیشوند
API های تمام صفحه HTMLVideoElement با پیشوند از Chrome منسوخ شده اند.
آنها با API Element.requestFullscreen() جایگزین شدند که اولین بار در سال ۲۰۱۸ در کروم ۷۱ بدون پیشوند ارائه شد. از سال ۲۰۲۴، اکثر مرورگرها چند سالی است که از APIهای بدون پیشوند پشتیبانی میکنند.
کروم ۱۳۲ موارد زیر را از HTMLVideoElement حذف میکند:
- ویژگی
webkitSupportsFullscreen. - ویژگی
webkitDisplayingFullscreen. - متد
webkitEnterFullscreen() - متد
webkitExitFullscreen(). به بزرگ و کوچک بودن متفاوت حرف "S" در حالت تمام صفحه (FullScreen) توجه کنید. - متد
webkitEnterFullScreen() - متد
webkitExitFullScreen()
این متدها اکنون فقط نامهای مستعار برای API مدرن هستند. استفاده از آنها در طول سالها به طور پیوسته کاهش یافته است.