Chrome 133 בטא

תאריך פרסום: 15 בינואר 2024

אלא אם צוין אחרת, השינויים הבאים חלים על הגרסה העדכנית ביותר של ערוץ הבטא של Chrome ל-Android, ל-ChromeOS, ל-Linux, ל-macOS ול-Windows. מידע נוסף על התכונות שמפורטות כאן זמין בקישורים שסופקו או ברשימה בכתובת ChromeStatus.com. גרסה 133 של Chrome היא גרסה בטא נכון ל-15 בינואר 2024. אפשר להוריד את הגרסה העדכנית ביותר בכתובת Google.com למחשב או מחנות Google Play ל-Android.

CSS וממשק משתמש

בגרסה הזו נוספו שבע תכונות חדשות של CSS ושל ממשק משתמש.

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

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

מידע נוסף זמין במאמר שדרוג של שירות CSS attr().

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

פסאודו-הקלאס :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%;
  }
}

מידע נוסף זמין במאמר CSS scroll-state().

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

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

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

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

הערך hint של המאפיין popover

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

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

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

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

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

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

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

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

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

Animation.overallProgress

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כשהאפשרות 103 Early Hints מופעלת, לתשובות יש שתי חותמות זמן:

  • מתי מגיעים הרמזים המוקדמים (103)
  • כשהכותרות הסופיות מגיעות (למשל 200)

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

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

הממשק FileSystemObserver

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

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

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

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

ההקפאה כוללת השהיה של הביצוע. הוא מוגדר באופן רשמי ב-Page Lifecycle API.

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

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

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

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

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

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

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

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

WebAssembly Memory64

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

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

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

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

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

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

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

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

בגרסה 133 של Chrome אפשר להצטרף לניסויים חדשים למקורות הבאים.

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

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

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

בגרסה הזו של Chrome הוספנו את ההוצאות משימוש וההסרות שמפורטות בהמשך. באתר ChromeStatus.com אפשר למצוא רשימות של הוצאות משימוש מתוכננות, הוצאות משימוש נוכחיות והוצאות קודמות משימוש.

בגרסה הזו של Chrome הופסקה התמיכה בתכונה אחת.

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

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

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

בגרסה הזו של Chrome הוסרו שתי תכונות.

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

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

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

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

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