פורסם: 15 בינואר 2024
אלא אם צוין אחרת, השינויים הבאים חלים על הגרסה החדשה ביותר של ערוץ הבטא של Chrome ל-Android, ל-ChromeOS, ל-Linux, ל-macOS ול-Windows. מידע נוסף על התכונות שמופיעות כאן זמין בקישורים שצוינו או ברשימה שבכתובת ChromeStatus.com. נכון ל-15 בינואר 2024, גרסה Chrome 133 היא גרסת בטא. אפשר להוריד את הגרסה העדכנית של Google ל-Desktop מ-Google.com או מחנות Google Play ב-Android.
CSS וממשק משתמש
בגרסה הזו נוספו שבע תכונות חדשות של CSS וממשק משתמש.
פונקציה מתקדמת של CSS attr()
הטמעה של התוסף attr() שצוין ב-CSS רמה 5, שמאפשר סוגים מלבד <string> ושימוש בכל מאפייני ה-CSS (בנוסף לתמיכה הקיימת בפסאודו-אלמנט content).
מידע נוסף זמין במאמר שדרוג של CSS attr().
פסאודו מחלקה של CSS :open
פסאודו-המחלקות :open ו-<dialog> תואמות ל-<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%;
}
}
מידע נוסף על שירותי CSSscroll-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
ה-API של חלונות קופצים מציין את ההתנהגות של שני ערכים של המאפיין popover: auto ו-manual. התכונה הזו מתארת ערך שלישי, popover=hint. לרמזים, שלרוב משויכים להתנהגויות מסוג 'הסבר קצר', יש התנהגויות שונות במקצת. ההבדל העיקרי הוא שכשפותחים ערימות מקוננות של חלונות קופצים, hint כפוף ל-auto. לכן אפשר לפתוח חלון קופץ hint שלא קשור למה שמוצג, בזמן שחלונות קופצים auto קיימים נשארים פתוחים.
דוגמה קנונית היא שבורר <select> פתוח (popover=auto) ומוצג תיאור קצר שמופעל בהעברת העכבר (popover=hint). הפעולה הזו לא סוגרת את בורר <select>.
שיפורים במיקום של רכיב ה-Popover ונקודת העיגון
מוסיף דרך חובה להגדיר קשרי גומלין בין רכיבי פופ-אפ באמצעות התג popover.showPopover({source}). מאפשר ליחסי גומלין מסוג invoker ליצור הפניות מרומזות לרכיב anchor.
חלון קופץ שמוטמע בתוך רכיב שמפעיל אותו לא אמור להפעיל אותו מחדש
במקרה הבא, לחיצה על הלחצן מפעילה את ה-popover כמו שצריך, אבל לחיצה על ה-popover עצמו אחרי זה לא אמורה לסגור אותו.
<button popovertarget=foo>Activate
<div popover id=foo>Clicking me shouldn't close me</div>
</button>
בעבר זה קרה כי הבועות של הקליקים בחלון הקופץ עלו ל-<button> והפעילו את הרכיב שפותח את החלון הקופץ, מה שגרם לסגירה שלו. התנהגות המערכת השתנתה ועכשיו היא צפויה.
Web APIs
Animation.overallProgress
הכלי מספק למפתחים ייצוג נוח ועקבי של מידת ההתקדמות של אנימציה לאורך האיטרציות שלה, בלי קשר לאופי ציר הזמן שלה. בלי המאפיין overallProgress, צריך לחשב באופן ידני את מידת ההתקדמות של האנימציה, תוך התחשבות במספר האיטרציות של האנימציה ובשאלה אם currentTime של האנימציה הוא אחוז מזמן כולל (כמו במקרה של אנימציות מבוססות-גלילה) או כמות זמן מוחלטת (כמו במקרה של אנימציות מבוססות-זמן).
השיטה pause() של האובייקט Atomics
השיטה pause() נוספת לאובייקט של מרחב השמות Atomics, כדי לסמן למעבד שהקוד הנוכחי מבצע נעילת ספין.
דיווח על גיבוב (hashing) של סקריפטים ב-CSP
בדרך כלל, אפליקציות אינטרנט מורכבות צריכות לעקוב אחרי משאבי המשנה שהן מורידות, למטרות אבטחה.
בפרט, תקנים מומלצים ושיטות מומלצות בתחום (לדוגמה, PCI-DSS v4) מחייבים שאפליקציות אינטרנט ינהלו מלאי של כל הסקריפטים שהן מורידות ומריצות.
התכונה הזו מבוססת על CSP ועל Reporting API, ומדווחת על כתובות ה-URL ועל הגיבובים (ל-CORS/same-origin) של כל משאבי הסקריפט שהמסמך טוען.
העברה ששומרת את מצב ה-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)
כשגרסה Chrome 115 הושקה
firstInterimResponseStart
כדי לאפשר מדידה של שני חותמות הזמן האלה, שינינו גם את המשמעות של
responseStart (שמשמשת למדידה של
הזמן עד לבית הראשון (TTFB)) למשמעות 'הכותרות הסופיות'. השינוי הזה יצר בעיית תאימות לאינטרנט בדפדפנים ובכלים שלא בוצע בהם שינוי דומה למדד הכי רווחיים הזה.
ב-Chrome 133, השינוי הזה ב-responseStart בוטל כדי לפתור את בעיית התאימות הזו, ובמקומו נוסף firstResponseHeadersStart כדי לאפשר לאתרים למדוד את הזמן עד לכותרות הסופיות, תוך שמירה על ההגדרה המקורית של TTFB.
הממשק FileSystemObserver
הממשק FileSystemObserver שולח הודעות לאתרים על שינויים במערכת הקבצים. אתרים עוקבים אחרי שינויים בקבצים ובספריות שהמשתמש העניק להם הרשאה לגשת אליהם במכשיר המקומי של המשתמש או במערכת הקבצים של Bucket (שנקראת גם מערכת הקבצים הפרטית של המקור), ומקבלים הודעה על פרטי שינוי בסיסיים, כמו סוג השינוי.
המסך קופא במצב חיסכון באנרגיה
כשהתכונה 'חיסכון באנרגיה' פעילה, Chrome יקפיא 'קבוצת הקשר גלישה' שהוסתרה ולא השמיעה צלילים במשך יותר מחמש דקות, אם תת-קבוצה כלשהי של מסגרות מאותו מקור בתוכה חורגת מסף השימוש במעבד, אלא אם:
- מספק פונקציונליות של שיחות ועידה באודיו או בווידאו (זוהה על ידי זיהוי מיקרופון, מצלמה או צילום מסך/חלון/כרטיסייה, או RTCPeerConnection עם RTCDataChannel 'פתוח' או MediaStreamTrack 'פעיל').
- שליטה במכשיר חיצוני (שזוהה באמצעות WebUSB, Web Bluetooth, WebHID או Web Serial).
- מחזיק נעילת אינטרנט או חיבור IndexedDB שחוסם עדכון גרסה או עסקה בחיבור אחר.
הקפאה כוללת השהיה של הביצוע. הוא מוגדר באופן רשמי ב-API של מחזור החיים של הדף.
סף השימוש ב-CPU יכויל כך שכ-10% מכרטיסיות הרקע יוקפאו כשהתכונה 'חיסכון באנרגיה' פעילה.
ייבוא של כמה מפות
בשלב הזה, מפות ייבוא צריכות להיטען לפני כל מודול ES, ויכולה להיות רק מפת ייבוא אחת לכל מסמך. הדבר הופך אותם לשבירים ועלול להאט את השימוש בהם בתרחישים מהחיים האמיתיים: כל מודול שנטען לפני שהם נטענים גורם לשבירת האפליקציה כולה, ובאפליקציות עם הרבה מודולים הם הופכים למשאב חוסם גדול, כי צריך לטעון קודם את המפה כולה של כל המודולים האפשריים.
התכונה הזו מאפשרת לייבא כמה מפות לכל מסמך, על ידי מיזוג שלהן באופן עקבי ודטרמיניסטי.
כותרות של גישה לאחסון
הוספנו דרך חלופית להטמעות מאומתות להסכמה לשימוש בקובצי Cookie לא מחולקים. הכותרות האלה מציינות אם קובצי Cookie שלא חולקו למחיצות נכללים (או יכולים להיכלל) בבקשה לאחזור מהרשת נתונה, ומאפשרות לשרתים להפעיל הרשאות 'גישה לאחסון' שכבר הוענקו להם. מתן דרך חלופית להפעלת ההרשאה 'גישה לאחסון' מאפשר שימוש במשאבים שאינם iframe, ויכול לצמצם את זמן האחזור בהטמעות מאומתות.
תמיכה ביצירת ClipboardItem באמצעות Promise<DOMString>
הפרמטר ClipboardItem, שהוא הקלט לשיטת הלוח האסינכרוני write(), מקבל עכשיו ערכי מחרוזת בנוסף ל-Blobs בבונה שלו.
ClipboardItemData יכול להיות Blob, מחרוזת או Promise שמוביל ל-Blob או למחרוזת.
WebAssembly Memory64
הצעה לשיפור memory64 מוסיפה תמיכה בזיכרונות לינאריים של WebAssembly בגודל שגדול מ-2^32 ביט. הוא לא מספק הוראות חדשות, אלא מרחיב את ההוראות הקיימות כדי לאפשר אינדקסים של 64 ביט לזיכרונות ולטבלאות.
Web Authentication API: שיטת PublicKeyCredential getClientCapabilities()
השיטה PublicKeyCredential getClientCapabilities() מאפשרת לכם לקבוע אילו תכונות של WebAuthn נתמכות על ידי הלקוח של המשתמש. השיטה מחזירה רשימה של יכולות נתמכות, ומאפשרת למפתחים להתאים אישית את תהליכי העבודה והאימות על סמך הפונקציונליות הספציפית של הלקוח.
WebGPU: פורמטים של רכיב אחד לוורטקסים (ו-unorm8x4-bgra)
הוספנו פורמטים נוספים של קודקסי וידאו שלא היו בגרסה הראשונית של WebGPU, בגלל חוסר תמיכה או גרסאות ישנות של macOS (שכבר לא נתמכות על ידי אף דפדפן). פורמטים של קודקודים עם רכיב אחד מאפשרים לאפליקציות לבקש רק את הנתונים הדרושים, בעוד שבעבר הן היו צריכות לבקש לפחות פי שניים יותר עבור סוגי נתונים של 8 ו-16 ביט. הפורמט unorm8x4-bgra מאפשר לטעון צבעי ורטקסים שמקודדים ב-BGRA בצורה נוחה יותר, תוך שמירה על אותה תוכנת הצללה (shader).
אלגוריתם X25519 של Web Cryptography API
האלגוריתם X25519 מספק כלים לביצוע הסכם מפתח באמצעות הפונקציה X25519 שצוינה ב-RFC7748. אפשר להשתמש במזהה האלגוריתם X25519 בממשק SubtleCrypto כדי לגשת לפעולות שהוטמעו: generateKey, importKey, exportKey, deriveKey ו-deriveBits.
גרסאות מקור חדשות לניסיון
ב-Chrome 133 אפשר להצטרף לניסויים חדשים של מקורות.
ביטול ההסכמה להקפאה במצב חיסכון באנרגיה
הניסוי הזה מאפשר לאתרים לבטל את ההקפאה של התנהגות החיסכון באנרגיה שמופעלת ב-Chrome 133.
הוצאה משימוש והסרה
בגרסה הזו של Chrome מוצגות ההוצאות משימוש וההסרות שמפורטות בהמשך. באתר ChromeStatus.com אפשר למצוא רשימות של הוצאות משימוש מתוכננות, הוצאות משימוש נוכחיות והסרות קודמות.
בגרסה הזו של Chrome הוצאה משימוש תכונה אחת.
הוצאה משימוש של המגבלה maxInterStageShaderComponents של WebGPU
הוצאנו משימוש את maxInterStageShaderComponents limit בגלל שילוב של גורמים. תאריך ההסרה המיועד ב-Chrome 135.
- יתירות עם
maxInterStageShaderVariables: המגבלה הזו כבר משרתת מטרה דומה, והיא שולטת בכמות הנתונים שעוברים בין שלבי ההצללה. - אי התאמות קלות: יש הבדלים קלים בחישוב של שני המגבלות, אבל אפשר לנהל אותן ביעילות במסגרת המגבלה של
maxInterStageShaderVariables. - פישוט: ההסרה של
maxInterStageShaderComponentsמייעלת את ממשק ה-Shader ומפחיתה את המורכבות למפתחים. במקום לנהל שתי מגבלות נפרדות עם הבדלים קלים, הם יכולים להתמקד במגבלה המקיפה יותר שנקראתmaxInterStageShaderVariables.
בגרסה הזו של Chrome הוסרו שתי תכונות.
הסרת <link rel=prefetch> כלל של חמש דקות
בעבר, כשמשאב נטען מראש באמצעות <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 לא תשפיע יותר. הסרנו את הדף הזה כי הוא מיותר, כי חוויית ההפעלה הראשונה מופעלת בפלטפורמות למחשב.