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

منتشر شده: ۱۴ ژانویه ۲۰۲۶

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

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

پشتیبانی از ویژگی text-justify CSS

توسعه‌دهندگان می‌توانند نحوه ترازبندی متن را هنگام اعمال text-align: justify با استفاده از ویژگی text-justify کنترل کنند. به عنوان مثال، ترازبندی را با گسترش فضای بین کاراکترها، حتی در متن انگلیسی، اجباری کنند.

اصلاح محاسبه لبه سایه با border-radius برای مقادیر بالای border-radius

این بهبود تضمین می‌کند که سایه‌ها و مرزهای برش روی عناصر تقریباً دایره‌ای (که در آن border-radius نزدیک به ۵۰٪ است) دقیقاً با حد فاصل بصری لبه منحنی مطابقت دارند.

این امر باعث می‌شود که اشکال پیچیده و گرد، با دقت بیشتری رندر شوند و اختلافات بصری برای مقادیر شعاع بالا از بین برود. ضریب تنظیم شعاع حاشیه، که تضمین می‌کند گوشه‌ها برای شعاع‌های کوچک تیز به نظر برسند، اکنون با نزدیک شدن مقدار شعاع به ۵۰٪، به تدریج کاهش می‌یابد.

این همچنین در مورد خطوط غیر گرد (با استفاده corner-shape ) صدق می‌کند، که اکنون از همان مکانیسم تنظیم شعاع استفاده می‌کنند.

پوشش ستون برای طرح‌بندی چند ستونی CSS

از کروم ۱۴۵ به بعد، ویژگی‌های column-wrap و column-height در طرح‌بندی چند ستونی پشتیبانی می‌شوند. این ویژگی‌ها به شما امکان می‌دهند ستون‌ها را در جهت بلوک، در یک ردیف جدید قرار دهید.

قبل از کروم ۱۴۵، اگر ارتفاع کانتینر چندستونی محدود می‌شد، محتوایی که در فضای موجود جا نمی‌شد، به صورت ستون‌های سرریز در جهت درون‌خطی ظاهر می‌شد. این باعث ایجاد یک نوار پیمایش افقی در وب می‌شد. با ویژگی‌های column-height و column-wrap می‌توانید ارتفاعی را برای ردیف ستون‌ها تنظیم کنید و ستون‌های سرریز را طوری تنظیم کنید که به عنوان یک ردیف جدید ظاهر شوند.

برای اطلاعات بیشتر به بخش «پشتیبانی از ستون‌های پیچیده‌شده در طرح‌بندی چندستونی» مراجعه کنید.

رویداد onanimationcancel به GlobalEventHandlers نمایش بده

انیمیشن‌های CSS سطح ۱، رابط GlobalEventsHandler تعریف شده در مشخصات HTML را بسط می‌دهد و چهار کنترل‌کننده رویداد جدید را تعریف می‌کند: onanimationstart ، onanimationiteration ، onanimationend و onanimationcancel .

کنترل‌کننده‌ی رویداد onanimationcancel در GlobalEventsHandler IDL وجود نداشت و اکنون آشکار شده است.

letter-spacing و word-spacing در CSS: مقادیر درصدی

مقادیر درصد را برای ویژگی CSS letter-spacing و word-spacing ، همانطور که در مشخصات سطح ۴ ماژول متن CSS تعریف شده است، فعال می‌کند. مقادیر درصد نسبت به معیار پیشرفته کاراکتر فاصله (U+0020) محاسبه می‌شوند. این به توسعه‌دهندگان کنترل قوی‌تر و انعطاف‌پذیرتری بر تایپوگرافی می‌دهد، به خصوص در طراحی‌های واکنش‌گرا که فاصله‌گذاری متن باید با نماهای مختلف و اندازه‌های فونت سازگار شود.

لیست باکس انتخابی قابل تنظیم

این ویژگی، پشتیبانی از انتخاب‌های قابل تنظیم را به حالت رندرینگ لیست‌باکس، از جمله انتخاب تکی و چند انتخابی در حالت لیست‌باکس، گسترش می‌دهد.

حالت رندرینگ listbox به این معنی است که عنصر <select> به صورت درون‌جریانی یا در صفحه رندر می‌شود، نه با یک دکمه و پنجره‌ی پاپ‌آپ جداگانه. حالت رندرینگ Listbox از طریق ویژگی‌های multiple یا size، مانند <select multiple> یا <select size=4> ، در پلتفرم‌های مختلف قابل تنظیم است. وقتی ویژگی appearance:base-select CSS با این ویژگی‌ها به عنصر <select> اعمال شود، اکنون رندرینگ و رفتار ورودی آن بهبود می‌یابد.

این ویژگی از انتخاب قابل تنظیم برای پنجره بازشو چند انتخابی پشتیبانی نمی‌کند، که بعداً ارائه خواهد شد. برای ایجاد یک پنجره بازشو چند انتخابی، باید ویژگی‌های زیر تنظیم شوند: <select multiple size=1> .

فعال کردن رندر ایموجی تک رنگ در حالت رنگ‌های اجباری.

این تغییر، رفتار رندر ایموجی را در حالت رنگ‌های اجباری در کروم به‌روزرسانی می‌کند. در طول وضوح مقدار محاسبه‌شده، ایموجی‌هایی که مقدار font-variant-emoji آنها به صورت عادی یا یونیکد محاسبه می‌شود، در صورت وجود، با استفاده از گلیف‌های تک‌رنگ خود رندر می‌شوند.

بنابراین، کروم رندر رنگی ایموجی‌ها را متوقف می‌کند، که تضمین می‌کند ایموجی‌ها کاملاً در خط تولید حالت رنگ‌های اجباری شرکت کنند و به رنگ‌های با کنتراست بالای سیستم احترام بگذارند. رفتار در خارج از حالت رنگ‌های اجباری بدون تغییر باقی می‌ماند.

گزینه focusVisible در متد focus()

هنگام فراخوانی متد focus() ، توسعه‌دهندگان اکنون می‌توانند یک مقدار بولی focusVisible در دیکشنری FocusOptions ارائه دهند. وقتی مقدار آن true باشد، یک حلقه فوکوس همیشه دور عنصری که فوکوس روی آن انجام شده است، ترسیم می‌شود و با شبه کلاس :focus-visible مطابقت خواهد داشت. وقتی false باشد، حلقه فوکوس ترسیم نمی‌شود و :focus-visible نیز تطبیق نخواهد داشت. وقتی مقدار آن وجود نداشته باشد، عامل کاربر خودش تصمیم می‌گیرد که آیا حلقه فوکوس باید ترسیم شود یا خیر، و شبه کلاس :focus-visible نیز بر اساس آن تطبیق می‌یابد.

اثر Overscroll در اسکرول های غیر ریشه ای

اثرات overscroll الاستیک را روی کانتینرهای اسکرول غیر ریشه نشان می‌دهد. هنگامی که یک عنصر قابل اسکرول تو در تو به مرز اسکرول خود می‌رسد، overscroll affordance به جای فقط اسکرول کننده ریشه، روی آن عنصر اعمال می‌شود. این امر نیاز به راه‌حل‌های سفارشی جاوا اسکریپت را کاهش می‌دهد و می‌تواند برای هر عنصر با overscroll-behavior کنترل شود.

نمایش موقعیت واقعی پنجره در اندروید

کروم در اندروید اکنون با استفاده از window.screenX ، window.screenY ، window.outerWidth و window.outerHeight ، موقعیت و اندازه پنجره مرورگر را به طور دقیق گزارش می‌دهد.

پیش از این، کروم به اشتباه فرض می‌کرد که تمام پنجره‌های مرورگر در اندروید از مختصات (0، 0) شروع می‌شوند. این برای تبلت‌های اندرویدی که از حالت پنجره‌بندی آزاد استفاده می‌کنند، نادرست است و باعث می‌شود وب‌سایت‌ها هنگام پرس‌وجو از موقعیت پنجره روی صفحه با استفاده از window.screenX و window.screenY (این فیلدها مختصات گوشه بالا سمت چپ پنجره را در فضای مختصات سراسری ناحیه کاری ذخیره می‌کنند) همیشه 0 دریافت کنند.

علاوه بر این، کروم در اندروید به اشتباه فرض کرد که ابعاد بیرونی پنجره مرورگر با ابعاد داخلی نمای وب‌سایت برابر است.

API های وب

قبل از کروم ۱۴۵، NavigationTransition یک ویژگی from داشت که آدرس اینترنتی قدیمی ناوبری را نمایش می‌داد. Exposing to (a NavigationDestination ) این کار را کامل می‌کند. این ویژگی به ویژه هنگام استفاده از precommit handlers مفید است، زیرا در طول precommit آدرس اینترنتی فعلی هنوز به مقصد تغییر نکرده است.

WebGPU: ویژگی subgroup_uniformity

دامنه جدیدی به تحلیل یکنواختی اضافه می‌کند و بخش‌هایی از زبان را که در هر کدام بررسی می‌شوند تغییر می‌دهد تا امکان یکنواخت در نظر گرفتن عملکرد زیرگروه در موارد بیشتر فراهم شود.

آپسرت

پیشنهاد ECMAScript را برای Map.prototype.getOrInsert ، Map.prototype.getOrInsertComputed ، WeakMap.prototype.getOrInsert و WeakMap.prototype.getOrInsertComputed پیاده‌سازی می‌کند.

انواع InputEvent برای دستورات حذف در انتخاب‌های غیر فشرده

مقادیر دقیق inputType را برای میانبرهای صفحه کلید حذف در متن انتخاب شده گزارش می‌دهد. هنگامی که از دستورات حذف مانند Control+Backspace یا Control+Delete با متن انتخاب شده در عناصر contenteditable استفاده می‌شود، رویدادهای beforeinput و input اکنون deleteContentBackward یا deleteContentForward را به جای deleteWordBackward یا deleteWordForward گزارش می‌دهند. این به توسعه‌دهندگان وب اجازه می‌دهد تا به درستی بفهمند که چه عملیات ویرایشی رخ داده است و رفتارهای undo و redo یا ویرایش سفارشی قابل اعتمادی را پیاده‌سازی کنند.

به تماس‌گیرندگان اجازه می‌دهد هنگام تنظیم کوکی با API فروشگاه کوکی، maxAge را مشخص کنند.

زمان انقضای کوکی از قبل با استفاده از ویژگی expires قابل تنظیم است، اما maxAge گزینه‌ی اصطلاحی‌تری ارائه می‌دهد و API فروشگاه کوکی را با گزینه‌های ارائه شده توسط document.cookie و هدر HTTP Set-Cookie هم‌تراز می‌کند.

تأیید پرداخت امن: کلیدهای متصل به مرورگر

یک امضای رمزنگاری‌شده اضافی را روی ادعاهای تأیید پرداخت امن و ایجاد اعتبارنامه اضافه می‌کند. کلید خصوصی مربوطه در بین دستگاه‌ها همگام‌سازی نمی‌شود. این به توسعه‌دهندگان وب کمک می‌کند تا الزامات اتصال دستگاه برای تراکنش‌های پرداخت را برآورده کنند.

فعال‌سازی Sticky برای رویداد clipboardchange

کروم اکنون برای اجرای رویدادهای clipboardchange ، به فعال‌سازی کاربر چسبنده یا مجوز clipboard-read نیاز دارد تا از نظارت غیرمجاز بر کلیپ‌بورد جلوگیری کند. این تغییر مطابق با مشخصات API کلیپ‌بورد تعریف شده است.

نمایش rtpTimestamp از فریم‌های ویدیویی WebRTC با استفاده از VideoFrame.metadata()

یک متد VideoFrame.metadata() اضافه می‌کند که یک دیکشنری حاوی فیلد rtpTimestamp را برمی‌گرداند، اگر VideoFrame اصلی این فیلد را در فراداده خود داشته باشد. در غیر این صورت یک دیکشنری خالی برمی‌گرداند. فقط فریم‌های ویدیویی که از منابع WebRTC سرچشمه می‌گیرند، فراداده rtpTimestamp را به خود متصل خواهند داشت.

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

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

در این سناریوها، محتوایی که برنامه وب سعی در بارگذاری آن دارد، در رقابت با سایر کارهایی است که روی سیستم انجام می‌شود. این امر تشخیص اینکه آیا مشکلات عملکردی در خود برنامه‌های وب وجود دارد یا به دلیل عوامل خارجی است را دشوار می‌کند.

یک فیلد confidence جدید در شیء PerformanceNavigationTiming به توسعه‌دهندگان اجازه می‌دهد تا تشخیص دهند که آیا زمان‌بندی‌های ناوبری برای برنامه وب آنها نماینده هستند یا خیر.

اضافه کردن presentationTime و paintTime به ورودی‌های performance

نمایش paintTime و presentationTime در زمان‌بندی عناصر، LCP، فریم‌های انیمیشن طولانی و زمان‌بندی رنگ‌آمیزی.

paintTime به معنی زمانی است که مرحله رندرینگ به پایان رسیده و مرورگر مرحله رنگ‌آمیزی را آغاز کرده است. presentationTime به معنی زمانی است که "پیکسل‌ها به صفحه نمایش رسیده‌اند" که تا حدودی از نظر پیاده‌سازی تعریف شده است. ببینید LCP و INP اکنون Baseline هستند. به تازگی در دسترس قرار گرفته‌اند .

استفاده از پیکسل‌های CSS در API مربوط به LayoutShift

این ویژگی، داده‌های انتساب ( prevRect و currentRect ) در API مربوط به LayoutShift را تغییر می‌دهد تا به جای پیکسل‌های فیزیکی، در پیکسل‌های CSS گزارش شوند. رفتار فعلی با سایر APIهای مرتبط با طرح‌بندی که همگی از پیکسل‌های CSS استفاده می‌کنند، مغایرت دارد. این تغییر، سازگاری را بهبود می‌بخشد، استفاده را برای توسعه‌دهندگان ساده می‌کند و با واحدهای مورد انتظار در اشکال‌زدایی و ابزارسازی همسو می‌شود.

توجه داشته باشید که این موضوع بر مقدار معیار CLS تأثیر نمی‌گذارد، اما بر ابزارهای اشکال‌زدایی که تصاویر و اسکرین‌شات‌های این تغییرات را نشان می‌دهند، تأثیر می‌گذارد.

اعتبارنامه‌های جلسه متصل به دستگاه (DBSC)

راهی برای وب‌سایت‌ها تا بتوانند یک جلسه (session) را به طور ایمن به یک دستگاه واحد متصل کنند.

این به سرورها اجازه می‌دهد تا یک جلسه داشته باشند که به طور ایمن به یک دستگاه متصل است. مرورگر جلسه را به صورت دوره‌ای و طبق درخواست سرور، با اثبات داشتن کلید خصوصی، تمدید می‌کند.

مجوزهای تقسیم دسترسی به شبکه محلی

این یک بهبود در محدودیت‌های دسترسی به شبکه محلی (LNA) است، که در آن مجوزهای مورد نیاز از یک مجوز دسترسی به شبکه محلی را به دو مجوز جداگانه تقسیم می‌کنیم.

مجوز قدیمی: local-network-access

مجوزهای جدید:

  • local-network : برای درخواست‌های LNA به IPهای موجود در فضای آدرس محلی.
  • loopback-network : برای درخواست‌های LNA به IPهای موجود در فضای آدرس loopback.

مجوز قدیمی به عنوان یک نام مستعار نگه داشته می‌شود و باید برای permissions.query و Permissions Policy به کار خود ادامه دهد. سیاست‌های سازمانی فعلی به کار خود ادامه خواهند داد؛ سیاست‌های سازمانی جدیدتر و جزئی‌تر در آینده اضافه خواهند شد.

رابط برنامه‌نویسی کاربردی (API) مبدا

مبدأ یک جزء اساسی از پیاده‌سازی وب است که برای مرزهای امنیتی و حریم خصوصی که توسط مرورگرها حفظ می‌شوند، ضروری است. این مفهوم بین HTML و URL، همراه با مفاهیم مجاور پرکاربرد مانند site ، به خوبی تعریف شده است.

با این حال، Originها مستقیماً در دسترس توسعه‌دهندگان وب نیستند. اگرچه دریافت‌کننده‌های origin مختلفی روی اشیاء مختلف وجود دارد، اما هر یک از آنها سریال‌سازی ASCII یک origin را برمی‌گردانند، نه خود origin. این موضوع پیامدهای منفی متعددی دارد. در عمل، توسعه‌دهندگانی که سعی می‌کنند هنگام مدیریت originهای serialized، مقایسه‌های same-origin یا same-site انجام دهند، اغلب به روش‌هایی اشتباه می‌کنند که منجر به آسیب‌پذیری می‌شود. از نظر فلسفی، به نظر می‌رسد که یک اصل اولیه امنیتی از دست رفته وجود دارد که توسعه‌دهندگان برای polyfill دقیق آن مشکل دارند.

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

API ضدعفونی کننده

API ضدعفونی‌کننده راهی را برای توسعه‌دهندگان فراهم می‌کند تا محتوایی را که ممکن است اسکریپت را از محتوای HTML دلخواه و ارائه شده توسط کاربر اجرا کند، حذف کنند. هدف، آسان‌تر کردن ساخت برنامه‌های وب عاری از XSS است.

ترازبندی مشخصات انواع مورد اعتماد

انواع قابل اعتماد (Trusted Types) در ابتدا در سال ۲۰۱۹ در کروم پیاده‌سازی و راه‌اندازی شد.

مشخصات Trusted Type اکنون در مرورگرهای دیگر نیز پیاده‌سازی می‌شود. به عنوان بخشی از این فرآیند، ناسازگاری‌های مختلفی در مشخصات شناسایی و برطرف می‌شوند. این نسخه، این مشکلات را در کروم برطرف می‌کند تا با مشخصات جدید همسو شود.

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

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

WebAudio: رندر کوانتومی قابل تنظیم

AudioContext و OfflineAudioContext اکنون یک renderSizeHint اختیاری می‌گیرند که به کاربران اجازه می‌دهد هنگام ارسال یک عدد صحیح، اندازه کوانتوم رندر خاصی را درخواست کنند، در صورت عدم ارسال یا default بودن، از پیش‌فرض ۱۲۸ فریم استفاده کنند، یا در صورت مشخص بودن hardware ، از User-Agent بخواهند اندازه کوانتوم رندر مناسبی را انتخاب کند.

منسوخ‌ها و حذف‌ها

این نسخه از کروم، منسوخ‌ها و حذف‌های زیر را معرفی می‌کند. برای مشاهده‌ی فهرست منسوخ‌های برنامه‌ریزی‌شده، منسوخ‌های فعلی و حذف‌های قبلی، به ChromeStatus.com مراجعه کنید.

کروم پشتیبانی از دوربین‌های مجازی منسوخ‌شده را در macOS حذف می‌کند

از کروم ۱۴۵، پشتیبانی از دوربین‌های مجازی منسوخ‌شده برای تمام نسخه‌های macOS که پشتیبانی می‌کند، حذف شده است.

در macOS، دوربین‌های مجازی مدرن با استفاده از چارچوب Core Media IO ساخته می‌شوند که از macOS 12.3 در دسترس است. اپل اطلاع‌رسانی انجام داده و تمام نرم‌افزارهای دوربین مجازی مدرن به استفاده از این چارچوب Core Media IO مهاجرت کرده‌اند.

دوربین‌های مجازی منسوخ‌شده، که به عنوان افزونه‌های DAL ساخته شده‌اند، توسط خود macOS از macOS 14.1 (2023) مسدود شده‌اند و از سال ۲۰۱۸، اگر نگوییم زودتر، در سافاری پشتیبانی نمی‌شوند.

حذف پسوند BMP برای جاسازی JPEG یا PNG در BMP

کروم افزونه‌ی BMP برای جاسازی JPEG-or-PNG-in-BMP را حذف می‌کند، زیرا هیچ مرورگر دیگری از این افزونه پشتیبانی نمی‌کند و هیچ کاربردی ندارد (چون با استفاده از داده‌های UMA ثبت شده است).

رشته‌های کاهش‌یافته‌ی User-Agent به طور پیش‌فرض

با شروع از کروم ۱۴۵، سیاست UserAgentReduction به طور کامل حذف خواهد شد. این سیاست قبلاً برای کنترل اینکه کروم رشته User-Agent را به صورت کاهش یافته یا کامل ارسال کند، در دسترس بود.

برای افزایش حریم خصوصی کاربران و کاهش قابلیت‌های ردیابی غیرفعال، کروم در نسخه ۱۱۰ کروم، به‌طور پیش‌فرض شروع به کاهش اطلاعات موجود در سربرگ User-Agent کرد. سیاست UserAgentReduction به‌عنوان یک اقدام موقت برای سازمان‌ها جهت مدیریت این گذار ارائه شد.

مکانیزم پیشنهادی برای دسترسی وب‌سایت‌ها به اطلاعات مرورگر و دستگاه، اکنون User-Agent Client Hints (UA-CH) است. UA-CH از وب‌سایت‌ها می‌خواهد که به‌طور فعال اطلاعات خاصی را درخواست کنند، که رویکردی با حفظ حریم خصوصی بیشتر نسبت به رشته User-Agent قدیمی است.

از کروم ۱۴۵ به بعد، سیاست UserAgentReduction دیگر تأثیری نخواهد داشت. کروم به طور پیش‌فرض یک رشته عامل کاربری (User-Agent) کاهش‌یافته ارسال می‌کند. سیستم‌ها یا برنامه‌هایی که برای دریافت رشته عامل کاربری کامل (قدیمی) به این سیاست متکی بودند، ممکن است دیگر اطلاعات دقیقی را که انتظار دارند دریافت نکنند.