תאריך פרסום: 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()
.
text-box
, text-box-trim
ו-text-box-edge
של CSS
כדי להשיג איזון אופטימלי של תוכן הטקסט, המאפיינים 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
כשפותחים ערימות בתצוגת popover. כך אפשר לפתוח חלון קופץ לא קשור מסוג 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
המפתחים יכולים להשתמש ב-Timeline כדי לראות בצורה נוחה ועקבית עד כמה האנימציה התקדמה במהלך החזרות שלה, ללא קשר לאופי של ציר הזמן. בלי המאפיין overallProgress
, צריך לחשב באופן ידני את מידת ההתקדמות של אנימציה, תוך התחשבות במספר החזרות של האנימציה ובשאלה אם הערך של currentTime
באנימציה הוא אחוז מהזמן הכולל (כמו במקרה של אנימציות שמבוססות על גלילה) או כמות זמן מוחלטת (כמו במקרה של אנימציות שמבוססות על זמן).
השיטה pause()
של האובייקט Atomics
הוספת השיטה pause()
לאובייקט המרחב המשותף Atomics
, כדי להעביר ל-CPU רמז לכך שהקוד הנוכחי מבצע נעילה חזקה (spinlock).
דיווח על גיבוב 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 אלפיות השנייה כשהמסמך לא מבודד בין מקורות. נראה שהיא מספיק גסה כדי למנוע זליגה של מידע שימושי בזמן פענוח של תמונות ממקורות שונים.
הממשק FileSystemObserver
הממשק FileSystemObserver
מעדכן אתרים על שינויים במערכת הקבצים. האתרים מזהים שינויים בקבצים ובספריות שהמשתמש העניק להם הרשאה, במכשיר המקומי של המשתמש או במערכת הקבצים של הקטגוריה (שנקראת גם מערכת הקבצים הפרטית של המקור), ומקבלים התראות על פרטי שינויים בסיסיים, כמו סוג השינוי.
הקפאה במצב חיסכון באנרגיה
כשהתכונה 'חיסכון באנרגיה' פעילה, Chrome מקפיא 'קבוצת הקשר של גלישה' שהוסתר ושהיה שקט במשך יותר מחמש דקות, אם קבוצת משנה כלשהי של מסגרות מאותו מקור בתוכה חורגת מסף השימוש ב-CPU, אלא אם:
- פונקציונליות של שיחות ועידה בווידאו או באודיו (הזיהוי מתבצע על ידי זיהוי של מיקרופון, מצלמה או צילום מסך/חלון/כרטיסייה, או RTCPeerConnection עם RTCDataChannel 'פתוח' או MediaStreamTrack 'פעיל').
- שליטה במכשיר חיצוני (שזוהה באמצעות WebUSB, Web Bluetooth, WebHID או Web Serial).
- מכיל מנעול אינטרנט או חיבור IndexedDB שחוסם עדכון גרסה או עסקה בחיבור אחר.
ההקפאה כוללת השהיה של הביצוע. הוא מוגדר באופן רשמי ב-Page Lifecycle API.
כשמצב החיסכון באנרגיה פועל, הסף לשימוש ב-CPU יותאם כך שיוקפאו כ-10% מהכרטיסיות ברקע.
כמה מפות ייבוא
בשלב זה, מפות הייבוא צריכות להיטען לפני כל מודול של ES, וניתן להשתמש רק במפת ייבוא אחת לכל מסמך. לכן הן לא יציבות ועשויות להיות איטיות לשימוש בתרחישים אמיתיים: כל מודול שנטען לפניהן גורם לשבירה של האפליקציה כולה, ובאפליקציות עם הרבה מודולים הן הופכות למשאב חסימה גדול, כי קודם צריך לטעון את המפה המלאה של כל המודולים האפשריים.
התכונה הזו מאפשרת להשתמש במספר מפות ייבוא לכל מסמך, על ידי מיזוג שלהן באופן עקבי ודטרמיניסטי.
כותרות גישה לאחסון
היא מציעה דרך חלופית להצגת מודעות מוטמעות מאומתות שמאפשרת להביע הסכמה לשימוש בקובצי cookie ללא חלוקה למחיצות. הכותרות האלה מציינות אם קובצי cookie ללא חלוקה למחיצות כלולים (או יכולים להיכלל) בבקשת רשת נתונה, ומאפשרות לשרתים להפעיל הרשאות 'גישה לאחסון' שכבר הוקצו להם. מתן דרך חלופית להפעלת ההרשאה 'storage-access' מאפשרת שימוש במשאבים שאינם iframe, ויכולה לצמצם את זמן האחזור של הטמעות מאומתות.
תמיכה ביצירת ClipboardItem
באמצעות Promise<DOMString>
עכשיו אפשר להזין ערכים של מחרוזות בנוסף ל-Blobs ב-constructor של ClipboardItem
, שהוא הקלט של שיטת הלוח האסינכרוני write()
.
הערך של 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>
לחמש דקות
בעבר, כשמשאב אוחזר מראש באמצעות <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
לא תשפיע עכשיו. הדף הזה הוסר כי הוא חופף לחוויית ההפעלה הראשונה שמופיעה בפלטפורמות למחשב.