כמעט בכל גרסה של Chrome ניתן לראות מספר משמעותי של עדכונים ושיפורים למוצר, לביצועים שלו וליכולות של פלטפורמת האינטרנט. במאמר הזה נתאר את ההוצאה משימוש וההסרות ב-Chrome 60, שנמצא בגרסת בטא נכון ל-8 ביוני. הרשימה הזו עשויה להשתנות בכל עת.
אבטחה
עכשיו נדרש מקור מאובטח עבור crypto.subtle
ה-Web Crypto API שנתמך מאז הגרסה של Chrome 37 תמיד עבד על מקורות לא מאובטחים. בגלל המדיניות הוותיקה של Chrome לגבי העדפה למקורות מאובטחים לתכונות מתקדמות, האפשרות crypto.subtle
לא גלויה רק במקורות מאובטחים.
הסרת ניווטים במסגרות מובילות שנוצרו על ידי תוכן לכתובות URL של נתונים
בגלל שהם לא מכירים את המשתמשים שלא משתמשים בדפדפנים טכניים, אנחנו רואים יותר ויותר שימוש בסכימה data:
למטרות זיוף ופישינג. כדי למנוע זאת, אנחנו חוסמים דפי אינטרנט כך שלא יוכלו לטעון כתובות URL של data:
בפריים העליון. הכלל הזה חל על תגי <a>
, על window.open
, על window.location
ועל מנגנונים דומים. הסכמה data:
תמשיך לפעול
במשאבים שנטענים על ידי דף.
התכונה הזו הוצאה משימוש בגרסה 58 של Chrome ועכשיו היא הוסרה.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
השבתה זמנית של navigator.sendBeacon() בחלק מה-blobs.
הפונקציה navigator.sendBeacon()
זמינה החל מגרסה Chrome 39.
כפי שנוצר במקור, הארגומנט data
של הפונקציה יכול להכיל כל blob שרירותי שהסוג שלו לא נמצא ברשימת ההיתרים של CORS. אנחנו מאמינים שמדובר באיום אבטחה פוטנציאלי, למרות שאף אחד עדיין לא ניסה לנצל אותו. מאחר שאין לנו פתרון מיידי סביר לכך, באופן זמני, לא ניתן יותר להפעיל את sendBeacon()
ב-blobs שהסוג שלהם לא בטוח ל-CORS.
על אף ששינוי זה יושם עבור Chrome 60, הוא עבר מיזוג בחזרה ל-Chrome 59.
CSS
גורם לשילוב צאצאים מצלליות להתנהג כמו קומבינטור צאצא
שילוב הצאצאים של צאצאי הצלליות (>>>
), שהוא חלק מהמודול להיקף CSS ברמה 1, נועד להתאים לילדים של רכיב אב מסוים גם אם הם הופיעו בתוך עץ צל. היו לכך כמה מגבלות.
ראשית, לפי המפרט, אפשר היה להשתמש בה רק בקריאות של JavaScript כמו querySelector()
, והיא לא פעלה בגיליון סגנונות. חשוב מכך, ספקי דפדפנים לא הצליחו לגרום לו לעבוד מעבר לרמה אחת של Shadow DOM.
כתוצאה מכך, הוסר שילוב הצאצאים ממפרטים רלוונטיים, כולל Shadow DOM v1. במקום לקטוע דפי אינטרנט על ידי הסרת בורר זה מ-Chromium, בחרנו במקום זאת לכינוי את שילוב הצאצאים של הצלליות לרכיב צאצאים. ההתנהגות המקורית הוצאה משימוש ב-Chrome 45. ההתנהגות החדשה מיושמת ב-Chrome 61.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
JavaScript
הוצא משימוש והסרה של RTCPeerConnection.getStreamById()
לפני כמעט שנתיים, getStreamById()
הוסר מהמפרט של WebRTC, אבל רוב הדפדפנים האחרים כבר הסירו אותו מההטמעות שלהם. למרות שנראה שהשימוש בפונקציה הזו מועט, חשוב לזכור גם שקיים סיכון מזערי ביכולת הפעולה ההדדית עם דפדפנים שמבוססים על Edge ו-WebKit חוץ מאשר ב-Safari, שם עדיין יש תמיכה ב-getStreamById()
. מפתחים שזקוקים להטמעה חלופית יכולים למצוא קוד לדוגמה בקטע Intent to Remove שבהמשך.
ההסרה מתבצעת ב-Chrome 62.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הוצאה משימוש של SVGPathElement.getPathSegAtLength
לפני יותר משנתיים, getPathSegAtLength()
הוסר ממפרט ה-SVG.
מאחר שיש רק קומץ היטים לשיטה הזו ב-httparchive, היא יוצאת משימוש ב-Chrome 60. ההסרה צפויה להתבצע ב-Chrome בגרסה 62, שיתקבל בשלב כלשהו בתחילת או באמצע אוקטובר.
כוונת הוצאה משימוש | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
העברת getContextAttributes() מאחורי סימון
הפונקציה getContextAttributes()
נתמכת ב-CanvasRenderingContext2D
מאז 2013. עם זאת, התכונה לא הייתה חלק מסטנדרט כלשהו, ומאז לא הפכה לחלק ממנה. היה צריך להטמיע אותו מאחורי הדגל --enable-experimental-canvas-features
של שורת הפקודה, אבל הוא לא הוטמע בטעות. פיקוח זה תוקן בגרסה 60 של Chrome. אנו מאמינים שהשינוי הזה בטוח, כי לא נמצאו נתונים שמראים שמישהו משתמש בשיטה.
הסרה של Headers.prototype.getAll()
הפונקציה Headers.prototype.getAll()
מוסרת בהתאם לגרסה האחרונה של מפרט Fetch.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הסרה של IndexDB.webkitGetDatabaseNames()
הוספנו את התכונה הזו כשמסד הנתונים Indexed היה חדש יחסית ב-Chrome, והתחילית הייתה כל הזעם. ה-API מחזיר באופן אסינכרוני רשימה של שמות קיימים של מסדי נתונים במקור, שנראו הגיוניים מספיק.
למרבה הצער, התכנון פגום כי התוצאות עשויות להיות מיושנות ברגע שהן מוחזרות, כך שבאמת אפשר להשתמש בהן רק לצורך רישום ביומן, ולא לוגיקה רצינית של אפליקציות. הבעיה ב-github מפנה לדיון קודם לגבי חלופות או קישור לדיון קודם, שנדרשת גישה שונה. מפתחים הביעו עניין רב ועניין לאורך זמן, אך בגלל ההיעדר התקדמות בדפדפנים שונים, מחברי הספריות פתרו את הבעיה.
מפתחים שזקוקים לפונקציונליות הזו צריכים לפתח פתרון משלהם. בספריות כמו Dexie.js, לדוגמה, נעשה שימוש בטבלה גלובלית שהיא מסד נתונים נוסף למעקב אחרי שמות של מסדי נתונים.
התכונה הזו הוצאה משימוש בגרסה 58 של Chrome ועכשיו היא הוסרה.
כוונה להסיר | Chromestatus tracker | באג ב-Chromium
הסרה של WEBKIT_KEYFRAMES_כלל ו-WEBKIT_KEYFRAME_כלל
הקבועים הלא סטנדרטיים WEBKIT_KEYFRAMES_RULE
ו-WEBKIT_KEYFRAME_RULE
מוסרים מכלל CSS.
במקום זאת, המפתחים צריכים להשתמש ב-KEYFRAMES_RULE
וב-KEYFRAME_RULE
.
כוונה להסיר | Chromestatus tracker | באג ב-Chromium
ממשק משתמש
נדרשת תנועת משתמש לתיבות דו-שיח של beforeunload.
החל מ-Chrome 60 ואילך, תיבת הדו-שיח beforeunload
תופיע רק אם המסגרת שמנסה להציג אותה קיבלה תנועת משתמש או אינטראקציה של משתמש (או אם מסגרת מוטמעת כלשהי קיבלה תנועה כזו). אבהיר שלא מדובר בשינוי בשליחת האירוע beforeunload
. זה רק שינוי של הצגת
תיבת הדו-שיח.
תיבת הדו-שיח beforeunload
היא תיבת דו-שיח בחלון נפרד של אפליקציה. ככזה, היא עוינת מטבעה של המשתמש, כלומר היא מגיבה לניווט של המשתמש על ידי שליחת שאלות לגבי החלטת המשתמש. יש שימושים חיוביים לתכונה הזו. לדוגמה, המידע הזה משמש לעיתים קרובות כדי להזהיר משתמשים כשהם מאבדים נתונים בניווט.
היכולת של דף מסוים לספק טקסט בתיבת הדו-שיח beforeunload
הוסרה לפני זמן מה, אבל תיבות הדו-שיח של beforeunload
נשארו מקור של ניצול לרעה. באופן ספציפי, תיבות הדו-שיח של beforeunload
הן מרכיב של אתרי תרמיות, שבהם
הפעלה אוטומטית של אודיו וטקסט מאיים מספקות הקשר שבו ההודעה "האם אתה בטוח שברצונך לצאת מהדף הזה" מ-Chromium הופכת להיות מדאיגה.
אנחנו רוצים להשחיל את המחט ולאפשר רק שימוש טוב בתיבת הדו-שיח beforeunload
. שימושים טובים בתיבת הדו-שיח הם מקרים שבהם למשתמש יש מצב שעלול ללכת לאיבוד. אם למשתמש לא הייתה אינטראקציה עם הדף, לא יכול להיות למשתמש מצב שעלול לאבד, ולכן אנחנו לא מסתכנים באובדן נתוני המשתמש על ידי ביטול תיבת הדו-שיח במקרה כזה.