نسخه بتای کروم ۱۴۹

منتشر شده: ۶ مه ۲۰۲۶

مگر اینکه خلاف آن ذکر شده باشد، تغییرات زیر در جدیدترین نسخه کانال بتای کروم برای اندروید، ChromeOS، لینوکس، macOS و ویندوز اعمال می‌شود. برای کسب اطلاعات بیشتر در مورد ویژگی‌های ذکر شده در اینجا، از طریق لینک‌های ارائه شده یا از لیست موجود در ChromeStatus.com اقدام کنید. کروم از تاریخ ۶ مه ۲۰۲۶ در نسخه بتا است. می‌توانید آخرین نسخه را برای دسکتاپ از Google.com یا برای اندروید از فروشگاه گوگل پلی دانلود کنید.

سی‌اس‌اس و رابط کاربری

حذف رنگ حاشیه صریح در قوانین استایل‌شیت UA برای جداول

این تغییر، قانون CSS اشتباه border-color: gray را از شیوه‌نامه UA برای عنصر <table> حذف می‌کند.

مشخصات HTML شامل این قانون نیست و باعث می‌شود که حاشیه‌ها به اشتباه به صورت پیش‌فرض روی currentColor نباشند. نه فایرفاکس و نه وب‌کیت این قانون رنگ حاشیه gray را در شیوه‌نامه UA خود ندارند و این منجر به مشکلات interop می‌شود.

پشتیبانی از path() و shape() در shape-outside

پشتیبانی از توابع شکل path() و shape() را در ویژگی shape-outside در CSS اضافه می‌کند. این توابع به توسعه‌دهندگان اجازه می‌دهند اشکال float exclusion را با استفاده از مختصات مستطیل تعریف کنند.

پشتیبانی از تابع‌های rect() و xywh() در shape-outside

پشتیبانی از توابع شکل پایه rect() و xywh() را در ویژگی shape-outside در CSS اضافه می‌کند. این توابع به توسعه‌دهندگان اجازه می‌دهند شکل‌های float exclusion را با استفاده از مختصات مستطیل تعریف کنند و کروم را با فایرفاکس و سافاری که از این ویژگی پشتیبانی می‌کنند، هم‌تراز کنند.

رنگ تأکیدی سیستم دامنه برنامه وب

دسترسی به رنگ تاکیدی سیستم را برای کلمات کلیدی CSS و accent-color: auto محدود می‌کند تا فقط در یک برنامه وب و زمینه اولیه پروفایل باشد.

کلمات کلیدی CSS مربوط AccentColor و AccentColorText هنگام نمایش گسترده رنگ‌های سیستم کاربر در وب، یک بردار اثر انگشت قابل توجه ایجاد می‌کنند. به همین دلیل، آنها فقط در زمینه‌های برنامه‌های وب نصب شده در دسترس هستند. کنترل‌های فرم با accent-color: auto نیز این محدوده را با این ویژگی تطبیق می‌دهند. این امر انتظارات سازگارتر توسعه‌دهنده و کاربر را برای رنگ‌های سیستم ارائه می‌دهد و با محدودیت‌های اثر انگشت برای AccentColor[Text] همسو می‌شود.

سرریز متن کلیپ در تعامل کاربر

وقتی کاربر با متنی که ویژگی text-overflow: ellipsis روی آن تنظیم شده است، تعامل (ویرایش یا پیمایش با نشانگر) می‌کند، متن به طور موقت از حالت ellipsis به clip تغییر می‌کند و به کاربر اجازه می‌دهد محتوای سرریز پنهان را ببیند و با آن تعامل داشته باشد. این ویژگی برای همه عناصر قابل ویرایش و غیرقابل ویرایش اعمال می‌شود. برای کنترل‌های فرم ( textarea ، input )، این رفتار از قبل پشتیبانی می‌شود.

تزئینات شکاف CSS

تزئینات شکاف CSS به شما امکان می‌دهد شکاف‌ها را در طرح‌بندی‌های کانتینر مانند grid و flexbox، شبیه به column-rule در طرح‌بندی چند ستونی، استایل‌دهی کنید. این ویژگی به شدت توسط توسعه‌دهندگان وب درخواست شده است که امروزه باید از ترفندهایی برای استایل‌دهی شکاف‌ها در طرح‌بندی‌های grid و flexbox استفاده کنند.

image-rendering: crisp-edges

image-rendering: crisp-edges نشان می‌دهد که تصویر باید به گونه‌ای مقیاس‌بندی شود که کنتراست و لبه‌ها حفظ شوند و از صاف شدن رنگ‌ها یا ایجاد تاری در تصویر در این فرآیند جلوگیری شود.

مرز لایه بالایی شبه کلاس اقدام کاربر

این ویژگی نشان‌دهنده‌ی رفتاری است که در مشخصات سطح ۴ انتخابگرهای CSS شرح داده شده است، که بیان می‌کند :hover ، :active و :focus-within با والدهای عناصر مطابقت دارند، اما فقط تا اولین عنصر لایه بالایی در زنجیره والد. تغییر برای Chromium این محدودیت را برای عناصر لایه بالایی پیاده‌سازی می‌کند.

به طور مشخص، این بدان معناست که در ساختار زیر اگر کاربر نشانگر ماوس را روی <button> نگه دارد، آنگاه کلاس کاذب :hover با <button> و popover مطابقت خواهد داشت، اما با عنصر <main> مطابقت نخواهد داشت.

<main>
  <div popover>
    <button></button>
  </div>
</main>
<script>document.querySelector('[popover]').showPopover();</script>

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

پیاده‌سازی قابل تنظیم select که در Chromium ارائه شده است، این منطق را برای حالت خاص popover با استفاده از select ::picker() به صورت پیش‌فرض دارد. این منطق حالت خاص به نفع رفتار عمومی‌تر این ویژگی حذف شده است.

پشتیبانی از path-length به عنوان یک ویژگی CSS

این تغییر یک ویژگی CSS جدید به path-length معرفی می‌کند که به ویژگی ارائه pathLength موجود در SVG نگاشت می‌شود. این ویژگی برای عناصر هندسی SVG که از pathLength پشتیبانی می‌کنند (از جمله <path> ، <circle> ، <rect> ، <line> ، <polyline> ، <polygon> و <ellipse> ) اعمال می‌شود.

نمایش pathLength به عنوان یک ویژگی CSS به نویسندگان اجازه می‌دهد تا آن را در stylesheetها، استایل‌های درون‌خطی و انیمیشن‌ها مشخص کنند و آن را قادر می‌سازد تا در آبشاری‌سازی، ویژگی، انتقال‌ها و انیمیشن‌های CSS معمولی شرکت کند. این ویژگی بر تمام محاسباتی که به طول کل مسیر بستگی دارند، از جمله رندر خط تیره و موقعیت متن در امتداد <textPath> تأثیر می‌گذارد.

اعلان‌های CSS با پیروی از قوانین تقدم استاندارد CSS، ویژگی ارائه را لغو می‌کنند. مقدار اولیه path-length برابر none است که نشان‌دهنده عدم وجود طول مسیر ارائه شده توسط نویسنده است و با یک مقدار عددی صریح مانند 0 متمایز است.

رفتار صرفاً ویژگی موجود، هنگام غیرفعال شدن ویژگی، حفظ می‌شود.

API های وب

Intl.Locale.prototype.variants

همانطور که در پیشنهاد TC39 ذکر شده است، Intl.Locale.prototype.variants اضافه کنید و همچنین "variants" را در قسمت option bag در سازنده Intl.Locale مانند به‌روزرسانی شناسه زبان TC39 بپذیرید. تغییرات در ECMA402 در درخواست pull شماره ۹۶۰ ادغام شده و کد تست در test262 در درخواست pull شماره ۴۴۷۴ ادغام شده است.

وعده‌های اسکرول برنامه‌ریزی‌شده

توسعه‌دهندگان وب در حال حاضر هیچ راهی برای فهمیدن اینکه چه زمانی یک اسکرول روان برنامه‌نویسی‌شده تکمیل شده است، ندارند. این ویژگی راه‌حلی برای این مشکل ارائه می‌دهد: کاری کنید که متدهای اسکرول برنامه‌نویسی‌شده، اشیاء Promise را برگردانند که با تکمیل اسکرول و با وضعیت وقفه، حل می‌شوند.

درخواست پرداخت: به متصدیان پرداخت اجازه دهید خطاهای داخلی را گزارش دهند

به کنترل‌کننده‌های پرداخت که با API درخواست پرداخت قابل دسترسی هستند، این امکان را می‌دهد که خطاهای متمایزی را برای «کاربر لغو کرد» در مقابل «خطای برنامه پرداخت داخلی» برگردانند. این به توسعه‌دهندگان وب اجازه می‌دهد تا جریان‌های بهتری را برای کاربران ایجاد کنند، به عنوان مثال با تلاش مجدد یا بازگشت به یک جریان متفاوت هنگام بروز خطای برنامه داخلی، در حالی که اگر کاربر بخواهد لغو کند، جریان را به درستی متوقف می‌کند.

رابط برنامه‌نویسی کاربردی مدیریت پرداخت مبتنی بر وب می‌تواند این تفاوت را بر اساس خطایی که برای رد کردن قول ارسال شده به PaymentRequestEvent.respondWith استفاده می‌کنند، نشان دهد. اگر قول با OperationError رد شود، "خطای داخلی برنامه" ( OperationError ) با استفاده از متد PaymentRequest.show() به فروشنده برگردانده می‌شود، در غیر این صورت "لغو کاربر" ( AbortError ) برگردانده می‌شود.

زیرساخت کنترل‌کننده پرداخت اپلیکیشن بومی نیز به طور مشابه به‌روزرسانی شده است، اما خارج از محدوده APIهای وب است.

در TSF، به autocorrect="off" برای کیبورد لمسی ویندوز احترام بگذارید.

ویژگی autocorrect HTML به نویسندگان وب اجازه می‌دهد تا کنترل کنند که آیا تصحیح خودکار باید برای ورودی کاربر در عناصر قابل ویرایش از جمله <input> ، <textarea> و میزبان‌های قابل ویرایش اعمال شود یا خیر. در ویندوز، صفحه کلید لمسی این ویژگی را نادیده می‌گیرد و همیشه کلمات را به صورت خودکار تصحیح می‌کند. به عنوان مثال، تایپ "truf" و به دنبال آن فاصله در عنصری با autocorrect="off" به جای حفظ "truf " "true " را نتیجه می‌دهد. این ویژگی باعث می‌شود که ادغام TSF کروم، تصحیح خودکار صفحه کلید لمسی را هنگامی که عنصر قابل ویرایش متمرکز autocorrect="off" را تنظیم کرده است، شناسایی و برگرداند.

قطع اتصال WebSockets روی ورودی bfcache

اتصالات فعال WebSocket دیگر مانع از ورود صفحه به Back/Forward Cache (bfcache) نمی‌شوند. با بستن اتصالات در ورودی bfcache به جای علامت‌گذاری سند به عنوان غیرقابل قبول، مرورگر به صفحاتی که دارای websocketهای فعال هستند اجازه ذخیره و بازیابی می‌دهد.

ویژگی Request.isReloadNavigation

ویژگی بولی فقط خواندنی isReloadNavigation به رابط درخواست Fetch API اضافه می‌کند. این ویژگی نشان می‌دهد که آیا درخواست ناوبری فعلی به عنوان یک بارگذاری مجدد توسط کاربر آغاز شده است یا خیر (برای مثال، با استفاده از دکمه refresh، location.reload() یا history.go(0) ). این سیگنال در درجه اول در شیء Request درون FetchEvent یک Service Worker نمایش داده می‌شود.

فیلترهای SVG را روی افزونه‌ها و فریم‌های cross-origin و limited غیرفعال کنید.

این راه‌اندازی مانع از اعمال فیلترهای SVG به فریم‌های متقاطع یا محدود (به عنوان مثال، فریم‌های سندباکس) و افزونه‌های تعبیه‌شده (به عنوان مثال، pdfها) می‌شود. هنگامی که یک فریم یا افزونه با یک اثر فیلتر SVG رنگ‌آمیزی می‌شود، درخت اثر برای یافتن بالاترین جد بدون فیلترهای SVG پیمایش می‌شود و سپس آن اثر به جای آن اعمال می‌شود.

آزمایش‌های منشأ جدید

در کروم ۱۴۹ می‌توانید در آزمایش‌های جدید زیر شرکت کنید.

سیاست مجوزها: تمرکز-بدون-فعال‌سازی-کاربر

به جاسازی‌کنندگان (embedders) کنترل فوکوس برنامه‌ریزی‌شده از محتوای جاسازی‌شده را با سیاست مجوزهای focus-without-user-activation می‌دهد. وقتی این سیاست برای یک فریم رد می‌شود، فراخوانی‌های فوکوس برنامه‌ریزی‌شده ( element.focus() ، autofocus ، window.focus() ، dialog.showModal() و popover focus) مسدود می‌شوند، مگر اینکه توسط فعال‌سازی کاربر فعال شوند. فوکوس آغازشده توسط کاربر مانند کلیک کردن یا tab کردن هرگز تحت تأثیر قرار نمی‌گیرد.

این خط‌مشی را می‌توان با استفاده از هدر پاسخ HTTP مربوط به Permissions-Policy یا ویژگی allow در iframe تنظیم کرد. واگذاری فوکوس پشتیبانی می‌شود: یک فریم والد که فوکوس دارد می‌تواند به صورت برنامه‌نویسی فوکوس را به یک iframe فرزند منتقل کند، حتی اگر فرزند این خط‌مشی را رد کرده باشد، و هنگامی که یک فریم فوکوس دارد، می‌تواند فوکوس را در زیردرخت خود جابجا کند.

API ورودی رویداد محور گیم‌پد

این پیشنهاد، API گیم‌پد را با یک مدل جدید مبتنی بر رویداد گسترش می‌دهد که به برنامه‌ها امکان می‌دهد ورودی گیم‌پد را با تأخیر کمتری دریافت کنند. به جای تکیه بر نظرسنجی مکرر با استفاده از navigator.getGamepads() ، توسعه‌دهندگان اکنون می‌توانند به یک رویداد rawgamepadinputchange گوش دهند که هر زمان داده‌های ورودی جدید از دستگاه در دسترس باشد، فعال می‌شود. این امر امکان مدیریت ورودی با پاسخگویی بیشتر، به ویژه در برنامه‌های حساس به تأخیر را فراهم می‌کند.

توصیف‌گرهای سفارشی WebAssembly

به WebAssembly اجازه می‌دهد تا داده‌های مرتبط با انواع سطح منبع را به طور مؤثرتری در اشیاء توصیف‌گر سفارشی جدید ذخیره کند. این توصیف‌گرهای سفارشی را می‌توان با نمونه‌های اولیه برای اشیاء WebAssembly از آن نوع سطح منبع پیکربندی کرد. این امر به متدها اجازه می‌دهد تا روی زنجیره نمونه اولیه یک شیء WebAssembly نصب شوند و مستقیماً از جاوا اسکریپت با استفاده از نحو فراخوانی متد معمولی فراخوانی شوند. نمونه‌های اولیه و متدها را می‌توان با استفاده از یک تابع داخلی وارد شده، به صورت اعلانی پیکربندی کرد.