הוצאה משימוש והסרות ב-Chrome 60

Joe Medley
Joe Medley

כמעט בכל גרסה של Chrome אנחנו מוסיפים מספר רב של עדכונים ושיפורים למוצר, לביצועים שלו וליכולות של פלטפורמת האינטרנט. במאמר הזה מתוארים הפריטים שהוצאו משימוש והפריטים שהוסרו בגרסה 60 של Chrome, שנמצאת בגרסת בטא החל מ-8 ביוני. הרשימה הזו עשויה להשתנות בכל שלב.

אבטחה

עכשיו נדרשת קריאה למקור מאובטח ב-crypto.subtle

Web Crypto API, שנתמך מאז Chrome 37, תמיד עבד במקורות לא מאובטחים. בגלל המדיניות הוותיקה של Chrome של העדפת מקורות מאובטחים לתכונות מתקדמות, האפשרות crypto.subtle מוצגת לא רק במקורות מאובטחים.

כוונה להסרה | באג ב-Chromium

הסרת ניווטים בפריים העליון שמתחילים בתוכן לכתובות URL של נתונים

בגלל שהם לא מוכרים למשתמשים לא טכניים בדפדפנים, אנחנו רואים יותר ויותר שימוש בתוכנית data: בהתקפות זיופים ופישינג. כדי למנוע זאת, אנחנו חוסמים את הטעינה של כתובות URL מסוג data: בדפי אינטרנט שבמסגרת העליונה. הכלל הזה חל על תגי <a>, ‏ window.open,‏ window.location ומנגנונים דומים. הסכימה data: עדיין תפעל למשאבים שנטענים על ידי דף.

התכונה הזו הוצאה משימוש ב-Chrome 58 והיא הוסרה עכשיו.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

השבתה זמנית של navigator.sendBeacon() בחלק מה-blobs

הפונקציה navigator.sendBeacon() זמינה מגרסת Chrome 39. כפי שהוטמעה במקור, הארגומנט data של הפונקציה יכול להכיל כל blob שרירותי שהסוג שלו לא נכלל ברשימת ההיתרים של CORS. אנחנו סבורים שזוהי איום אבטחה פוטנציאלי, אבל עדיין אף אחד לא ניסה לנצל אותו. מכיוון שאין לנו תיקון מיידי סביר לבעיה, באופן זמני אי אפשר להפעיל את sendBeacon() ב-blobs שהסוג שלהם לא נכלל ברשימת ההיתרים של CORS.

השינוי הזה הוטמע ב-Chrome 60, אבל מאז הוא מוזג חזרה ל-Chrome 59.

באג ב-Chromium

CSS

איך לגרום לבורר הצאצאים שחודר לצללים להתנהג כמו בורר הצאצאים

הקומבינטור של הצאצאים החודרים לצל (>>>), שהוא חלק ממודול היקף ההחלה של CSS ברמה 1, נועד להתאים לצאצאים של אלמנט אב מסוים גם כשהם מופיעים בתוך עץ צל. לכך היו כמה מגבלות. ראשית, לפי המפרט, אפשר היה להשתמש בו רק בקריאות JavaScript כמו querySelector(), והוא לא עבד בגיליונות סגנונות. חשוב מכך, יצרני הדפדפנים לא הצליחו לגרום לזה לפעול מעבר לרמה אחת של Shadow DOM.

כתוצאה מכך, ה-combinator של הצאצאים הוסר מהמפרטים הרלוונטיים, כולל Shadow DOM v1. במקום לשבור דפי אינטרנט על ידי הסרת הבורר הזה מ-Chromium, בחרנו להקצות כינוי לבורר הצאצא שמחדור צללים לבורר הצאצא. ההתנהגות המקורית הופסקה ב-Chrome 45. ההתנהגות החדשה מוטמעת ב-Chrome 61.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

JavaScript

הוצאה משימוש והסרה של RTCPeerConnection.getStreamById()

לפני כמעט שנתיים, getStreamById() הוסר מהמפרט של WebRTC. רוב הדפדפנים האחרים כבר הסירו אותו מההטמעות שלהם. אמנם נראה שהפונקציה הזו לא בשימוש נרחב, אבל יש גם סיכון קטן של אי-תאימות הדדית עם דפדפני Edge ו-WebKit מלבד Safari, שבו getStreamById() עדיין נתמך. מפתחים שזקוקים להטמעה חלופית יכולים למצוא קוד לדוגמה בהודעת הכוונה להסרה שבהמשך.

ההסרה מתבצעת ב-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. אנחנו סבורים שהשינוי הזה בטוח, כי אין נתונים שמראים שמישהו משתמש בשיטה הזו.

באג ב-Chromium

הסרה של Headers.prototype.getAll()

הפונקציה Headers.prototype.getAll() תוסר בהתאם לגרסה העדכנית ביותר של מפרט האחזור.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הסרת indexedDB.webkitGetDatabaseNames()

הוספנו את התכונה הזו כש-Indexed DB היה חדש יחסית ב-Chrome והשימוש בתחילית היה פופולרי מאוד. ה-API מחזיר באופן אסינכרוני רשימה של שמות של מסדי נתונים קיימים במקור, וזה נראה הגיוני למדי.

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

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

התכונה הזו הוצאה משימוש ב-Chrome 58 והיא הוסרה עכשיו.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הסרת WEBKIT_KEYFRAMES_RULE ו-WEBKIT_KEYFRAME_RULE

המשתנים הקבועים הלא סטנדרטיים WEBKIT_KEYFRAMES_RULE ו-WEBKIT_KEYFRAME_RULE מוסרים מ-CSS Rule. המפתחים צריכים להשתמש ב-KEYFRAMES_RULE וב-KEYFRAME_RULE במקום זאת.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

ממשק משתמש

דרישה למחוות של משתמשים בתיבת דו-שיח מסוג beforeunload

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

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

יכולת הדף לספק טקסט לתיבת הדו-שיח beforeunload הוסרה לפני זמן מה, אבל תיבת הדו-שיח beforeunload עדיין משמשת לצורכי ניצול לרעה. במיוחד, תיבת הדו-שיח beforeunload היא רכיב של אתרי תרמיות, שבהם אודיו שמופעל אוטומטית וטקסט מאיים מספקים הקשר שבו ההודעה 'האם ברצונך לעזוב את הדף הזה?' שסופקה על ידי Chromium נראית מדאיגה.

אנחנו רוצים למצוא את האיזון הנכון ולאפשר רק שימוש נכון בתיבת הדו-שיח beforeunload. שימושים טובים בתיבת הדו-שיח הם כאלה שבהם למשתמש יש מצב שעשוי ללכת לאיבוד. אם המשתמש אף פעם לא קיים אינטראקציה עם הדף, אין לו מצב שעלול ללכת לאיבוד, ולכן אין סיכון לאובדן נתוני משתמשים אם נחסום את תיבת הדו-שיח במקרה כזה.