کروم 133 بتا

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

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

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

این نسخه هفت ویژگی جدید CSS و رابط کاربری اضافه می‌کند.

تابع پیشرفته‌ی attr() در CSS

قابلیت افزایش attr() که در CSS سطح ۵ مشخص شده است را پیاده‌سازی می‌کند، که علاوه بر <string> ، امکان استفاده از انواع دیگر را نیز در تمام ویژگی‌های CSS فراهم می‌کند (علاوه بر پشتیبانی موجود برای content شبه عنصر).

برای اطلاعات بیشتر به بخش ارتقاء attr() در CSS مراجعه کنید .

CSS :open

شبه کلاس :open با <dialog> و <details> زمانی که در حالت باز خود هستند، مطابقت دارد و با <select> و <input> زمانی که در حالت‌هایی هستند که دارای انتخابگر هستند و انتخابگر نمایش داده می‌شود، مطابقت دارد.

کوئری‌های مربوط به کانتینر حالت اسکرول CSS

از کوئری‌های کانتینر برای استایل‌دهی به فرزندان کانتینرها بر اساس وضعیت اسکرول آنها استفاده کنید.

ظرف پرس‌وجو یا یک ظرف اسکرول است، یا عنصری که تحت تأثیر موقعیت اسکرول یک ظرف اسکرول قرار می‌گیرد. حالت‌های زیر را می‌توان پرس‌وجو کرد:

  • stuck : یک ظرف چسبنده به یکی از لبه‌های کادر پیمایش چسبیده است.
  • snapped : یک کانتینر با تراز اسکرول اسنپ در حال حاضر به صورت افقی یا عمودی اسنپ شده است.
  • scrollable : مشخص می‌کند که آیا می‌توان یک کانتینر اسکرول را در جهت مورد نظر اسکرول کرد یا خیر.

یک نوع جدید container-type: scroll-state امکان پرس‌وجو از کانتینرها را فراهم می‌کند.

#sticky {
  position: sticky;
  container-type: scroll-state;
}

@container scroll-state(stuck: top) {
  #sticky-child {
    font-size: 75%;
  }
}

برای اطلاعات بیشتر به scroll-state() در CSS مراجعه کنید.

text-box ، text-box-trim و text-box-edge در CSS

برای دستیابی به تعادل بهینه در محتوای متن، ویژگی‌های text-box-trim و text-box-edge به همراه ویژگی مختصرنویسی text-box ، کنترل دقیق‌تر ترازبندی عمودی متن را امکان‌پذیر می‌کنند.

ویژگی text-box-trim اضلاع مورد نظر برای برش، بالا یا پایین، را مشخص می‌کند و ویژگی text-box-edge نحوه برش لبه را مشخص می‌کند.

این ویژگی‌ها به شما امکان می‌دهند فاصله عمودی را با استفاده از معیارهای فونت به طور دقیق کنترل کنید. برای اطلاعات بیشتر به بخش text-box-trim در CSS مراجعه کنید.

مقدار hint مربوط به ویژگی popover

API مربوط به Popover رفتار دو مقدار از ویژگی popover را مشخص می‌کند: auto و manual . این ویژگی مقدار سومی به popover=hint توصیف می‌کند. Hintها که اغلب با رفتارهای نوع "tooltip" مرتبط هستند، رفتارهای کمی متفاوتی دارند. در درجه اول، تفاوت این است که hint هنگام باز کردن پشته‌های تو در تو از popoverها، تابع auto است. بنابراین می‌توان یک popover hint نامرتبط را باز کرد در حالی که یک پشته از popoverهای auto موجود باز می‌ماند.

مثال متعارف این است که یک انتخابگر <select> باز است ( popover=auto ) و یک راهنمای ابزار فعال‌شده با ماوس ( popover=hint ) نمایش داده می‌شود. این عمل انتخابگر <select> را نمی‌بندد.

بهبودهای فراخوانی Popover و موقعیت‌یابی لنگر

یک روش ضروری برای تنظیم روابط فراخوانی‌کننده بین popoverها با popover.showPopover({source}) اضافه می‌کند. روابط فراخوانی‌کننده را قادر می‌سازد تا ارجاعات ضمنی به عنصر anchor ایجاد کنند.

پاپ‌اوور تودرتو درون فراخوانی‌کننده نباید آن را دوباره فراخوانی کند

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

<button popovertarget=foo>Activate
  <div popover id=foo>Clicking me shouldn't close me</div>
</button>

قبلاً این اتفاق می‌افتاد، زیرا کلیک روی popover به صورت حبابی به <button> تبدیل می‌شد و فراخوانی‌کننده را فعال می‌کرد که popover را بسته می‌کرد. اکنون این رفتار به حالت مورد انتظار تغییر یافته است.

API های وب

Animation.overallProgress

به توسعه‌دهندگان، نمایش راحت و ثابتی از میزان پیشرفت یک انیمیشن در طول تکرارهایش و صرف نظر از ماهیت جدول زمانی آن ارائه می‌دهد. بدون ویژگی overallProgress ، شما باید به صورت دستی میزان پیشرفت یک انیمیشن را محاسبه کنید، تعداد تکرارهای انیمیشن و اینکه آیا currentTime انیمیشن درصدی از کل زمان است (مانند انیمیشن‌های اسکرول محور) یا یک کمیت زمانی مطلق (مانند انیمیشن‌های زمان محور) را در نظر بگیرید.

pause() pause از شیء Atomics

متد pause() را به شیء فضای نام Atomics اضافه می‌کند تا به CPU اطلاع دهد که کد فعلی در حال اجرای یک spinlock است.

گزارش هش CSP برای اسکریپت‌ها

برنامه‌های کاربردی وب پیچیده اغلب برای اهداف امنیتی نیاز به پیگیری زیرمنابعی دارند که دانلود می‌کنند.

به طور خاص، استانداردها و بهترین شیوه‌های صنعتی آینده (به عنوان مثال، PCI-DSS نسخه ۴) ایجاب می‌کنند که برنامه‌های وب، فهرستی از تمام اسکریپت‌هایی که دانلود و اجرا می‌کنند، نگهداری کنند.

این ویژگی بر اساس CSP و Reporting API ساخته شده است تا URLها و هش‌ها (برای CORS/same-origin) تمام منابع اسکریپتی که سند بارگذاری می‌کند را گزارش دهد.

حرکت حفظ وضعیت DOM

یک DOM اولیه ( Node.prototype.moveBefore ) اضافه می‌کند که به شما امکان می‌دهد عناصر را در یک درخت DOM جابجا کنید، بدون اینکه وضعیت عنصر را مجدداً تنظیم کنید.

هنگام جابجایی به جای حذف و درج، حالت زیر مانند حالت زیر حفظ می‌شود:

  • عناصر <iframe> بارگذاری شده باقی می‌مانند.
  • عنصر فعال همچنان در کانون توجه قرار دارد.
  • پنجره‌های بازشو، تمام صفحه و پنجره‌های محاوره‌ای مودال همچنان باز هستند.
  • انتقال‌ها و انیمیشن‌های CSS ادامه دارند.

نمایش ویژگی attributionsrc در <area>

نمایش ویژگی attributionsrc در <area> را با رفتار پردازشی موجود آن ویژگی، حتی زمانی که نمایش داده نشده باشد، هم‌تراز می‌کند.

علاوه بر این، پشتیبانی از این ویژگی در <area> منطقی است، زیرا این عنصر یک سطح ناوبری درجه یک است و کروم از قبل از این ویژگی در سطوح دیگر <a> و window.open پشتیبانی می‌کند.

نمایش renderTime با مبدا متقاطع خشن در زمان‌بندی عنصر و LCP (صرف نظر از Timing-Allow-Origin )

زمان‌بندی عناصر و ورودی‌های LCP دارای یک ویژگی renderTime هستند که با اولین فریمی که تصویر یا متن در آن ترسیم شده است، هم‌تراز می‌شود.

این ویژگی در حال حاضر برای تصاویر با منشأ متقابل با الزام یک هدر Timing-Allow-Origin در منبع تصویر محافظت می‌شود. با این حال، دور زدن این محدودیت آسان است (برای مثال، با نمایش یک تصویر با منشأ یکسان و یک تصویر با منشأ متقابل در یک فریم).

از آنجایی که این موضوع باعث سردرگمی شده است، ما در عوض قصد داریم این محدودیت را حذف کنیم و در عوض، زمانی که سند از مبداء متقابل ایزوله نشده باشد، تمام زمان‌های رندر را ۴ میلی‌ثانیه افزایش دهیم. این به نظر می‌رسد به اندازه کافی افزایش یافته است تا از نشت هرگونه اطلاعات مفید در مورد زمان رمزگشایی تصاویر از مبداء متقابل جلوگیری شود.

responseStart برگردانید و firstResponseHeadersStart را معرفی کنید

با فعال بودن 103 نکته اولیه ، پاسخ‌ها دو مهر زمانی دارند:

  • وقتی اشارات اولیه از راه می‌رسند (103)
  • وقتی هدرهای نهایی می‌رسند (مثلاً 200)

وقتی کروم ۱۱۵، firstInterimResponseStart را برای اندازه‌گیری این دو مهر زمانی منتشر کرد، ما معنی responseStart (که توسط Time to First Byte (TTFB) استفاده می‌شود) را نیز به "the final headers" تغییر دادیم. این موضوع باعث ایجاد مشکل سازگاری وب با مرورگرها و ابزارهایی شد که تغییر مشابهی را برای این معیار رایج ایجاد نمی‌کردند.

کروم ۱۳۳ این تغییر responseStart را برای حل این مشکل سازگاری برمی‌گرداند و در عوض firstResponseHeadersStart را معرفی می‌کند تا به سایت‌ها اجازه دهد زمان رسیدن به هدرهای نهایی را اندازه‌گیری کنند، در حالی که تعریف اصلی TTFB را حفظ می‌کند.

رابط FileSystemObserver

رابط FileSystemObserver وب‌سایت‌ها را از تغییرات در سیستم فایل مطلع می‌کند. سایت‌ها تغییرات در فایل‌ها و دایرکتوری‌هایی را که کاربر قبلاً به آنها اجازه دسترسی داده است، در دستگاه محلی کاربر یا در سیستم فایل Bucket (که با نام سیستم فایل خصوصی Origin نیز شناخته می‌شود) مشاهده می‌کنند و از اطلاعات اولیه تغییر، مانند نوع تغییر، مطلع می‌شوند.

یخ زدگی در حالت صرفه جویی در مصرف انرژی

وقتی صرفه‌جویی در مصرف انرژی فعال باشد، کروم «گروه زمینه مرور» را که بیش از پنج دقیقه پنهان و بی‌صدا بوده است، در صورتی که هر زیرگروه از فریم‌های با منشأ یکسان در آن از آستانه مصرف CPU فراتر رود، مسدود می‌کند، مگر اینکه:

  • قابلیت کنفرانس صوتی یا تصویری را فراهم می‌کند (که با شناسایی میکروفون، دوربین یا ضبط صفحه/پنجره/تب یا یک RTCPeerConnection با یک RTCDataChannel «باز» یا یک MediaStreamTrack «زنده» شناسایی می‌شود).
  • یک دستگاه خارجی را کنترل می‌کند (که با استفاده از WebUSB، Web Bluetooth، WebHID یا Web Serial شناسایی می‌شود).
  • دارای یک قفل وب یا یک اتصال IndexedDB است که به‌روزرسانی نسخه یا تراکنش را در یک اتصال متفاوت مسدود می‌کند.

فریز کردن به معنای متوقف کردن اجرا است و رسماً در API چرخه حیات صفحه تعریف شده است.

آستانه‌ی استفاده از پردازنده طوری تنظیم می‌شود که هنگام فعال بودن صرفه‌جویی در مصرف انرژی، تقریباً ۱۰٪ از تب‌های پس‌زمینه را مسدود کند.

نقشه‌های چندگانه برای وارد کردن

نقشه‌های ایمپورت در حال حاضر باید قبل از هر ماژول ES بارگذاری شوند و فقط می‌توان یک نقشه ایمپورت برای هر سند داشت. این امر آنها را شکننده و به طور بالقوه کند برای استفاده در سناریوهای واقعی می‌کند: هر ماژولی که قبل از آنها بارگذاری شود، کل برنامه را خراب می‌کند و در برنامه‌هایی با ماژول‌های زیاد، آنها به یک منبع مسدودکننده بزرگ تبدیل می‌شوند، زیرا کل نقشه برای همه ماژول‌های ممکن ابتدا باید بارگذاری شود.

این ویژگی با ادغام نقشه‌ها به روشی سازگار و قطعی، امکان وارد کردن چندین نقشه به ازای هر سند را فراهم می‌کند.

هدرهای دسترسی به حافظه

یک روش جایگزین برای جاسازی‌های احراز هویت‌شده ارائه می‌دهد تا کوکی‌های پارتیشن‌بندی‌نشده را انتخاب کنند. این هدرها نشان می‌دهند که آیا کوکی‌های پارتیشن‌بندی‌نشده در یک درخواست شبکه مشخص گنجانده شده‌اند (یا می‌توانند گنجانده شوند) و به سرورها اجازه می‌دهند مجوزهای «دسترسی به ذخیره‌سازی» را که قبلاً به آنها اعطا شده است، فعال کنند. ارائه یک روش جایگزین برای فعال کردن مجوز «دسترسی به ذخیره‌سازی»، امکان استفاده توسط منابع غیر iframe را فراهم می‌کند و می‌تواند تأخیر را برای جاسازی‌های احراز هویت‌شده کاهش دهد.

پشتیبانی از ایجاد ClipboardItem با Promise<DOMString>

ClipboardItem که ورودی متد write() کلیپ‌بورد async است، اکنون علاوه بر Blobs در سازنده‌اش، مقادیر رشته‌ای را نیز می‌پذیرد. ClipboardItemData می‌تواند یک Blob، یک رشته یا یک Promise باشد که به یک Blob یا یک رشته تبدیل می‌شود.

حافظه وب اسمبلی ۶۴

طرح پیشنهادی memory64 پشتیبانی از حافظه‌های خطی WebAssembly با اندازه بزرگتر از 2^32 بیت را اضافه می‌کند. این طرح هیچ دستورالعمل جدیدی ارائه نمی‌دهد، اما در عوض دستورالعمل‌های موجود را گسترش می‌دهد تا امکان شاخص‌گذاری 64 بیتی برای حافظه‌ها و جداول فراهم شود.

API احراز هویت وب: متد getClientCapabilities() نوع PublicKeyCredential

متد getClientCapabilities() به شما امکان می‌دهد تعیین کنید که کدام ویژگی‌های WebAuthn توسط کلاینت کاربر پشتیبانی می‌شوند. این متد لیستی از قابلیت‌های پشتیبانی‌شده را برمی‌گرداند و به توسعه‌دهندگان اجازه می‌دهد تا تجربیات احراز هویت و گردش‌های کاری را بر اساس عملکرد خاص کلاینت تنظیم کنند.

WebGPU: فرمت‌های رأس تک‌جزئی (و unorm8x4-bgra)

فرمت‌های رأس اضافی اضافه شده است که در نسخه اولیه WebGPU به دلیل عدم پشتیبانی یا نسخه‌های قدیمی macOS (که دیگر توسط هیچ مرورگری پشتیبانی نمی‌شوند) وجود نداشتند. فرمت‌های رأس تک جزئی به برنامه‌ها اجازه می‌دهند فقط داده‌های ضروری را درخواست کنند، در حالی که قبلاً مجبور بودند حداقل دو برابر بیشتر برای انواع داده‌های ۸ و ۱۶ بیتی درخواست کنند. فرمت unorm8x4-bgra بارگذاری رنگ‌های رأس کدگذاری شده توسط BGRA را در حالی که همان سایه‌زن را حفظ می‌کنند، کمی راحت‌تر می‌کند.

الگوریتم X25519 از API رمزنگاری وب

الگوریتم "X25519" ابزارهایی را برای انجام توافق کلید با استفاده از تابع X25519 مشخص شده در [RFC7748] فراهم می‌کند. شناسه الگوریتم "X25519" را می‌توان در رابط SubtleCrypto برای دسترسی به عملیات پیاده‌سازی شده استفاده کرد: generateKey، importKey، exportKey، derivedKey و derivedBits.

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

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

از حالت انجماد در حالت صرفه‌جویی در مصرف انرژی (Energy Saver) خارج شوید

این نسخه آزمایشی عدم تمایل به غیرفعال کردن حالت صرفه‌جویی در مصرف انرژی که در کروم ۱۳۳ ارائه می‌شود، به سایت‌ها اجازه می‌دهد تا از غیرفعال کردن این حالت انصراف دهند.

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

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

این نسخه از کروم یک ویژگی را منسوخ می‌کند.

محدودیت maxInterStageShaderComponents برای WebGPU را منسوخ کنید

maxInterStageShaderComponents limit به دلیل ترکیبی از عوامل منسوخ شده است. تاریخ حذف در نظر گرفته شده در Chrome 135.

  • افزونگی با maxInterStageShaderVariables : این محدودیت در حال حاضر هدف مشابهی را دنبال می‌کند و میزان داده‌های منتقل شده بین مراحل سایه‌زن را کنترل می‌کند.
  • اختلافات جزئی: اگرچه تفاوت‌های جزئی در نحوه محاسبه این دو محدودیت وجود دارد، اما این تفاوت‌ها جزئی هستند و می‌توان آن‌ها را به طور مؤثر در محدوده maxInterStageShaderVariables مدیریت کرد.
  • ساده‌سازی: حذف maxInterStageShaderComponents رابط کاربری shader را ساده‌تر کرده و پیچیدگی را برای توسعه‌دهندگان کاهش می‌دهد. به جای مدیریت دو محدودیت جداگانه با تفاوت‌های ظریف، آن‌ها می‌توانند روی maxInterStageShaderVariables که نام مناسب‌تر و جامع‌تری دارند، تمرکز کنند.

این نسخه از کروم دو ویژگی را حذف کرده است.

پیش از این، وقتی یک منبع با استفاده از <link rel=prefetch> پیش‌واکشی می‌شد، کروم برای اولین استفاده در عرض پنج دقیقه، معانی حافظه پنهان آن (یعنی max-age و no-cache ) را نادیده می‌گرفت تا از واکشی جلوگیری کند. اکنون، کروم این مورد خاص را حذف کرده و از معانی حافظه پنهان HTTP معمولی استفاده می‌کند.

این یعنی توسعه‌دهندگان وب باید هدرهای ذخیره‌سازی مناسب (Cache-Control یا Expires) را اضافه کنند تا از مزایای <link rel=prefetch> بهره‌مند شوند.

این همچنین بر <link rel=prerender> غیر استاندارد تأثیر می‌گذارد.

حذف صفحه خوشامدگویی کروم که با تنظیمات اولیه برای اولین اجرای تب‌ها فعال می‌شود

قرار دادن chrome://welcome در ویژگی first_run_tabs از فایل initial_preferences اکنون هیچ تاثیری نخواهد داشت. این حذف شده است زیرا آن صفحه با First Run Experience که در پلتفرم‌های دسکتاپ فعال می‌شود، اضافی است.