Chrome 133

תאריך פרסום הגרסה היציבה: 4 בפברואר 2025

אלא אם צוין אחרת, השינויים הבאים חלים על הגרסה 133 של Chrome בערוץ היציב ל-Android, ל-ChromeOS, ל-Linux, ל-macOS ול-Windows.

ב-Popover API מצוין ההתנהגות של שני ערכים של מאפיין ה-popover: אוטומטי וידני. התכונה הזו מתארת ערך שלישי, popover=hint. לטיפים, שמשויכים בדרך כלל להתנהגויות מסוג 'תיאור כללי', יש התנהגויות שונות במקצת. ההבדל העיקרי הוא שהצעה כפופה לאפשרות 'פתיחה אוטומטית' כשפותחים ערימות מוערמות של חלונות קופצים. כך אפשר לפתוח חלון קופץ לא קשור עם טיפים בזמן שערימה קיימת של חלונות קופצים אוטומטיים נשארת פתוחה.

הדוגמה הקנונית היא בורר <select> פתוח (popover=auto) ומוצג הסבר קצר (popover=hint) שמופעל על ידי החזקת העכבר מעליו. הפעולה הזו לא סוגרת את הבורר <select>.

מעקב אחרי באג מס' 1416284 | הרשומה ב-ChromeStatus.com

שיפורים בגורם ההפעלה של חלון קופץ ובמיקום של עוגן

הוספת דרך יעילה להגדרת יחסי מפעיל בין חלונות קופצים באמצעות popover.showPopover({source}). מאפשר לקשרי מבצע קריאה ליצור הפניות משתמעות לרכיבי עוגן.

באג מעקב מס' 364669918 | רשומה ב-ChromeStatus.com

חלון קופץ שמוטמע בתוך הגורם שמפעיל אותו לא אמור להפעיל אותו מחדש

במקרה הבא, לחיצה על הלחצן מפעילה את חלון הקופץ כראוי, אבל לחיצה על חלון הקופץ עצמו לאחר מכן לא אמורה לסגור אותו.

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

בעבר זה קרה כי הקליק על חלון הקופץ גורם לבועה לעבור אל <button> ולהפעיל את הגורם להפעלה, שמציב את חלון הקופץ במצב סגור. הבעיה תוקנה וההתנהגות חזרה להיות הצפויה.

מעקב אחרי באג מס' https://crbug.com/379241451 | רשומה ב-ChromeStatus.com

CSS

פונקציית attr() מתקדמת של CSS

הטמעה של ההרחבה ל-attr() שצוינה ב-CSS ברמה 5, שמאפשרת להשתמש בסוגים נוספים מלבד <string> ובכל מאפייני ה-CSS (בנוסף לתמיכה הקיימת בתוכן של פסאודו-אלמנט).

MDN attr() | מעקב אחרי באג מס' 246571 | רשומה ב-ChromeStatus.com | מפרט

פסאודו-מחלקה :open ב-CSS

פסאודו-הקלאס :open תואם ל-<dialog> ול-<details> כשהם במצב פתוח, ול-<select> ול-<input> כשהם במצבים שיש בהם בורר והבורר מוצג.

מעקב אחרי באג מס' 324293874 | הרשומה ב-ChromeStatus.com | מפרט

שאילתות של קונטיינרים של מצב גלילה ב-CSS

שימוש בשאילתות של מאגרים כדי לעצב את הצאצאים של המאגרים על סמך מצב הגלילה שלהם.

מאגר השאילתות הוא מאגר גלילה או רכיב שמושפע ממיקום הגלילה של מאגר גלילה. אפשר לשלוח שאילתות לגבי המצבים הבאים:

  • stuck: קונטיינר במיקום דביק מודבק לאחד מהקצוות של תיבת הגלילה.
  • snapped: קונטיינר שמיושר באמצעות התכונה 'הצמדה לגלילה' מיושר כרגע אופקית או אנכית.
  • scrollable: האם אפשר לגלול בקונטיינר של גלילה בכיוון של השאילתה.

סוג מאגר חדש: scroll-state מאפשר לשלוח שאילתות למאגרים.

מעקב אחרי באג מס' 40268059 | רשומה ב-ChromeStatus.com | מפרט

שירותי CSS‏ text-box,‏ text-box-trim ו-text-box-edge

כדי להשיג איזון אופטימלי של תוכן הטקסט, המאפיינים text-box-trim ו-text-box-edge, יחד עם המאפיין המקוצר text-box, מאפשרים לשלוט בצורה מדויקת יותר בהתאמה האנכית של הטקסט.

המאפיין text-box-trim מציין את הצדדים לחיתוך, מעל או מתחת, והמאפיין text-box-edge מציין איך צריך לחתוך את הקצה.

המאפיינים האלה מאפשרים לכם לשלוט במרווח האנכי בצורה מדויקת באמצעות מדדי הגופן.

מעקב אחרי באג מס' 1411581 | רשומה ב-ChromeStatus.com | מפרט

ממשקי API של אתרים

Animation.overallProgress

האפשרות הזו מספקת למפתחים ייצוג נוח ועקבי של מידת ההתקדמות של אנימציה במהלך החזרות שלה, ללא קשר לאופי ציר הזמן שלה. בלי המאפיין overallProgress, צריך לחשב באופן ידני את מידת ההתקדמות של אנימציה, תוך התחשבות במספר החזרות של האנימציה ובשאלה אם הערך של currentTime של האנימציה הוא אחוז מהזמן הכולל (כמו במקרה של אנימציות שמבוססות על גלילה) או כמות זמן מוחלטת (כמו במקרה של אנימציות שמבוססות על זמן).

באג מעקב מס' 40914396 | רשומה ב-ChromeStatus.com | מפרט

השיטה pause() של האובייקט Atomics

הוספת השיטה pause() לאובייקט שמרחב השמות Atomics, כדי להעביר ל-CPU רמז שהקוד הנוכחי מבצע נעילה חזקה (spinlock).

הרשומה ב-ChromeStatus.com | מפרט

דיווח על גיבוב (hash) של CSP עבור סקריפטים

לרוב, אפליקציות אינטרנט מורכבות צריכות לעקוב אחרי משאבי המשנה שהן מורידות, למטרות אבטחה.

באופן ספציפי, התקנים והשיטות המומלצות בתחום שצפויים בקרוב (לדוגמה, PCI-DSS v4) מחייבים אפליקציות אינטרנט לנהל מלאי של כל הסקריפטים שהן מורידות ומריצות.

התכונה הזו מבוססת על CSP ועל Reporting API כדי לדווח על כתובות ה-URL והגיבוב (עבור CORS/מקור זהה) של כל משאבי הסקריפטים שהמסמך טוען.

מעקב אחרי באג מס' 377830102 | הערך ב-ChromeStatus.com

העברה שמשמרת את מצב ה-DOM

הוספת רכיב DOM בסיסי (Node.prototype.moveBefore) שמאפשר להעביר רכיבים בעץ DOM בלי לאפס את המצב של הרכיב.

כשעוברים פריטים במקום להסיר אותם ולהוסיף אותם, המצב הבא נשמר:

  • האלמנטים של <iframe> נשארים טעונים.
  • הרכיב הפעיל נשאר בפוקוס.
  • חלונות קופצים, תיבות דו-שיח מודאליות ותיבות דו-שיח במסך מלא יישארו פתוחות.
  • מעברים ואנימציות של CSS ממשיכים לפעול.

הרשומה ב-ChromeStatus.com

חשיפת המאפיין attributionsrc ב-<area>.

התאמת החשיפה של המאפיין attributionsrc ב-<area> להתנהגות הקיימת של העיבוד של המאפיין, גם אם הוא לא נחשף.

בנוסף, כדאי לתמוך במאפיין ב-<area>, כי האלמנט הזה הוא משטח ניווט ברמה ראשונה, ו-Chrome כבר תומך בכך במשטחים האחרים של <a> ו-window.open.

מעקב אחרי באג מס' 379275911 | הרשומה ב-ChromeStatus.com | מפרט

הממשק FileSystemObserver

הממשק FileSystemObserver מעדכן אתרים על שינויים במערכת הקבצים. אתרים מזהים שינויים בקבצים ובספריות שהמשתמש העניק להם הרשאה בעבר, במכשיר המקומי של המשתמש או במערכת הקבצים של הקטגוריה (שנקראת גם מערכת הקבצים הפרטית של המקור), ומקבלים התראות על פרטי שינויים בסיסיים, כמו סוג השינוי.

מעקב אחרי באג מס' 40105284 | הרשומה ב-ChromeStatus.com

כמה מפות ייבוא

נכון לעכשיו, צריך לטעון את מפות הייבוא לפני כל מודול של ES, ולכל מסמך יכולה להיות רק מפת ייבוא אחת. לכן, הן לא יציבות ועשויות להיות איטיות לשימוש בתרחישים בעולם האמיתי: כל מודול שנטען לפניהן גורם לשבירה של האפליקציה כולה, ובאפליקציות עם הרבה מודולים הן הופכות למשאב חסימה גדול, כי קודם צריך לטעון את המפה של כל המודולים האפשריים.

התכונה הזו מאפשרת להשתמש במספר מפות ייבוא לכל מסמך, על ידי מיזוג שלהן באופן עקבי ודטרמיניסטי.

הרשומה ב-ChromeStatus.com

כותרות גישה לאחסון

היא מציעה דרך חלופית להטמעות מאומתות להביע הסכמה לשימוש בקובצי cookie ללא חלוקה למחיצות. הכותרות האלה מציינות אם קובצי cookie שלא חולקו למחיצות כלולים (או יכולים להיכלל) בבקשת רשת נתונה, ומאפשרות לשרתים להפעיל הרשאות 'גישה לאחסון' שכבר הוקצו להם. מתן דרך חלופית להפעלת ההרשאה 'גישה לאחסון' מאפשרת שימוש במשאבים שאינם iframe, ויכולה לצמצם את זמן האחזור להטמעות מאומתות.

מעקב אחרי באג מס' 329698698 | רשומה ב-ChromeStatus.com | מפרט

תמיכה ביצירת ClipboardItem באמצעות Promise<DOMString>

ClipboardItem, שהוא הקלט לשיטה write() של הלוח האסינכרוני, מקבל עכשיו ערכי מחרוזות בנוסף ל-Blobs ב-constructor שלו. ClipboardItemData יכול להיות Blob, מחרוזת או Promise שמתבצעת ל-Blob או למחרוזת.

מעקב אחרי באג מס' 40766145 | רשומה ב-ChromeStatus.com | מפרט

WebAssembly Memory64

ההצעה memory64 מוסיפה תמיכה בזיכרונות לינאריים של WebAssembly בגודל גדול מ-2^32 ביט. הוא לא מספק הוראות חדשות, אלא מרחיב את ההוראות הקיימות כדי לאפשר אינדקסים של 64 ביט לזיכרונות ולטבלאות.

הרשומה ב-ChromeStatus.com | מפרט

Web Authentication API: שיטת PublicKeyCredential getClientCapabilities()

השיטה PublicKeyCredential getClientCapabilities() מאפשרת לכם לקבוע אילו תכונות של WebAuthn נתמכות בלקוח של המשתמש. ה-method מחזיר רשימה של יכולות נתמכות, שמאפשרת למפתחים להתאים אישית את חוויות האימות ואת תהליכי העבודה על סמך הפונקציונליות הספציפית של הלקוח.

מעקב אחרי באג מס' 360327828 | רשומה ב-ChromeStatus.com | מפרט

האלגוריתם X25519 של Web Cryptography API

האלגוריתם X25519 מספק כלים לביצוע הסכמה על מפתחות באמצעות הפונקציה X25519 שצוינה ב-[RFC7748]. אפשר להשתמש במזהה האלגוריתם X25519 בממשק SubtleCrypto כדי לגשת לפעולות שהוטמעו: generateKey, ‏ importKey, ‏ exportKey, ‏ deriveKey ו-deriveBits.

מעקב אחרי באג מס' 378856322 | הרשומה ב-ChromeStatus.com | מפרט

ביצועים

הקפאה במצב חיסכון באנרגיה

כשהתכונה 'חיסכון באנרגיה' פעילה, Chrome מקפיא 'קבוצת הקשר של גלישה' שהוסתר ושהיה שקט במשך יותר מחמש דקות, אם קבוצת משנה כלשהי של מסגרות מאותו מקור בתוכה חורגת מסף השימוש ב-CPU, אלא אם:

  • פונקציונליות של כנסים בווידאו או באודיו (המערכת מזהה את הפונקציונליות הזו על ידי זיהוי מיקרופון, מצלמה או צילום מסך/חלון/כרטיסייה, או RTCPeerConnection עם RTCDataChannel 'פתוח' או MediaStreamTrack 'פעיל').
  • שליטה במכשיר חיצוני (שזוהה באמצעות WebUSB,‏ Web Bluetooth,‏ WebHID או Web Serial).
  • מכיל נעילת אינטרנט או חיבור IndexedDB שחוסם עדכון גרסה או עסקה בחיבור אחר.
  • ההקפאה כוללת השהיה של הביצוע. הוא מוגדר באופן רשמי ב-Page Lifecycle API.

כשמצב החיסכון באנרגיה פועל, הסף לשימוש ב-CPU יותאם כך שיוקפאו כ-10% מהכרטיסיות ברקע.

מעקב אחרי באג מס' 325954772 | הרשומה ב-ChromeStatus.com

חשיפת renderTime משוער בין מקורות בזמני רכיבים וב-LCP (ללא קשר ל-Timing-Allow-Origin)

לרכיבי תזמון ולרשומות LCP יש מאפיין renderTime, שמותאם לפריים הראשון שבו צוירה תמונה או טקסט.

בשלב זה, המאפיין הזה מוגן בתמונות ממקורות שונים על ידי דרישה לכותרת Timing-Allow-Origin במשאב התמונה. עם זאת, קל לעקוף את ההגבלה הזו (לדוגמה, על ידי הצגת תמונה מאותו מקור ותמונה ממקורות שונים באותו מסגרת).

מכיוון שהדבר עורר בלבול, אנחנו מתכננים להסיר את ההגבלה הזו, ובמקום זאת להאריך את כל זמני הרינדור ב-4 אלפיות השנייה כשהמסמך לא מבודד בין מקורות. נראה שהיא מספיק גסה כדי למנוע דליפה של מידע שימושי בזמן פענוח לגבי תמונות ממקורות שונים.

מעקב אחרי באג מס' 373263977 | רשומה ב-ChromeStatus.com | מפרט

החזרה לגרסה הקודמת של responseStart והשקה של firstResponseHeadersStart

כשהתכונה 'רמזים מוקדמים' מופעלת, לתשובות יש שתי חותמות זמן:

  • מתי מגיעים הרמזים המוקדמים (103)
  • כשהכותרות הסופיות מגיעות (למשל 200)
  • כשגרסת Chrome 115 שוחררה עם firstInterimResponseStart כדי לאפשר מדידה של שתי חותמות הזמן האלה, שינינו גם את המשמעות של responseStart (שמשמש את המדד 'זמן לקבלת הבית הראשון (TTFB)') ל'הכותרות הסופיות'. כתוצאה מכך נוצרה בעיה של תאימות לאינטרנט בדפדפנים ובכלים שלא בוצע בהם שינוי דומה במדד הנפוץ הזה.

ב-Chrome 133, השינוי ב-responseStart בוטל כדי לפתור את בעיית התאימות הזו, ובמקום זאת הושק firstResponseHeadersStart כדי לאפשר לאתרים למדוד את הזמן עד לקבלת הכותרות הסופיות, תוך שמירה על ההגדרה המקורית של TTFB.

מעקב אחרי באג מס' 40251053 | הרשומה ב-ChromeStatus.com | מפרט

רינדור וגרפיקה

WebGPU: פורמטים של קודקודים עם רכיב אחד (וגם unorm8x4-bgra)

נוספו פורמטים נוספים של קודקודים שלא היו במהדורה הראשונית של WebGPU בגלל חוסר תמיכה או בגלל גרסאות ישנות של macOS (שכבר לא נתמכות באף דפדפן). פורמטים של קודקודים עם רכיב אחד מאפשרים לאפליקציות לבקש רק את הנתונים הנחוצים, בעוד שבעבר הן היו צריכות לבקש פי שניים יותר עבור סוגים של נתונים ב-8 ו-16 ביט. הפורמט unorm8x4-bgra מאפשר לטעון בצורה נוחה יותר צבעים של קודקודים בקידוד BGRA תוך שמירה על אותו שדרוג.

מעקב אחרי באג מס' 376924407 | הרשומה ב-ChromeStatus.com

גרסאות מקור לניסיון

ביטול ההסכמה להקפאה במצב חיסכון באנרגיה

תקופת הניסיון הזו מאפשרת לאתרים לבטל את ההשתתפות בהתנהגות ההקפאה של חיסכון באנרגיה, שמופיעה בגרסת Chrome 133.

גרסת טרום-השקה | באג מעקב מס' 325954772 | הרשומה ב-ChromeStatus.com | מפרט

יעד עזר ל-ARIA ברמה הבסיסית

'יעד הפניה' הוא תכונה שמאפשרת להשתמש במאפייני IDREF כמו for ו-aria-labelledby כדי להפנות לרכיבים ב-Shadow DOM של רכיב, תוך שמירה על האנקפסולציה של הפרטים הפנימיים של Shadow DOM. המטרה העיקרית של התכונה הזו היא לאפשר ל-ARIA לפעול מעבר לגבולות של שורש הצל.

רכיב יכול לציין אלמנט בעץ הצל שלו שישמש כ'יעד העזר' שלו. כשרכיב המארח הוא היעד של IDREF, כמו המאפיין for של תווית, יעד ההפניה הופך ליעד בפועל של התווית.

שורש הצל מציין את המזהה של רכיב היעד בתוך ה-Shadow DOM. אפשר לעשות זאת ב-JavaScript באמצעות המאפיין referenceTarget באובייקט ShadowRoot, או בתגי עיצוב HTML באמצעות המאפיין shadowrootreferencetarget ברכיב <template>.

גרסת Origin לניסיון | הרשומה ב-ChromeStatus.com

הוצאה משימוש והסרות

הוצאה משימוש של המגבלה maxInterStageShaderComponents ב-WebGPU

השדה maxInterStageShaderComponents limit הוצא משימוש בגלל שילוב של גורמים. תאריך ההסרה המתוכנן בגרסה 135 של Chrome.

  • יתירות באמצעות maxInterStageShaderVariables: המגבלה הזו כבר משמשת למטרה דומה, היא קובעת את כמות הנתונים המועברים בין שלבי ה-shader.
  • אי-התאמות קלות: יש הבדלים קלים באופן שבו שני המגבלות מחושבות, אבל ההבדלים האלה הם קלים וניתן לנהל אותם ביעילות במסגרת המגבלה maxInterStageShaderVariables.
  • פשטות: הסרת maxInterStageShaderComponents משפרת את ממשק ה-shader ומפחיתה את המורכבות למפתחים. במקום לנהל שתי מגבלות נפרדות עם הבדלים קלים, הם יכולים להתמקד במגבלה המקיפת והמתאימה יותר, maxInterStageShaderVariables.

הרשומה ב-ChromeStatus.com

בעבר, כשמשאב אוחזר מראש באמצעות <link rel=prefetch>, Chrome התעלם מהסמנטיקה שלו במטמון (כלומר max-age ו-no-cache) בשימוש הראשון בתוך חמש דקות, כדי למנוע אחזור מחדש. עכשיו, Chrome מסיר את המקרה המיוחד הזה ומשתמש בסמינטיקה רגילה של מטמון HTTP.

המשמעות היא שמפתחי אתרים צריכים לכלול כותרות מתאימות לשמירת נתונים במטמון (Cache-Control או Expires) כדי ליהנות מהיתרונות של <link rel=prefetch>.

הפעולה הזו משפיעה גם על <link rel=prerender> הלא סטנדרטי.

מעקב אחרי באג מס' 40232065 | הרשומה ב-ChromeStatus.com

הסרת ההפעלה של דף הפתיחה של Chrome באמצעות כרטיסיות ההגדרות הראשוניות של ההפעלה הראשונה

עכשיו אין השפעה להכללת chrome://welcome בנכס first_run_tabs בקובץ initial_preferences. הדף הזה הוסר כי הוא חופף לחוויית ההפעלה הראשונה שמופיעה בפלטפורמות למחשב.

הרשומה ב-ChromeStatus.com