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

Joe Medley
Joe Medley

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

אבטחה

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

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

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

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

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

התכונה הזו הוצאה משימוש בגרסה 58 של Chrome, ועכשיו אנחנו מסירים אותה.

כוונת הסרה | Chromestatus tracker | באג ב-Chromium

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

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

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

באג ב-Chromium

CSS

לגרום לשילוב של צאצאי צאצא להתנהג כמו קומבינטור צאצא

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

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

כוונת הסרה | Chromestatus tracker | באג ב-Chromium

JavaScript

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

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

אפשרות ההסרה זמינה ב-Chrome 62.

כוונת הסרה | Chromestatus tracker | באג ב-Chromium

הוצאה משימוש של SVGPathElement.getPathSegAtLength

לפני יותר משנתיים, getPathSegAtLength() הוסר מהמפרט של SVG. מאחר שיש רק מספר קטן של היטים לשיטה זו ב-httpArchive, הוצא משימוש ב-Chrome 60. ההסרה צפויה להיות ב-Chrome 62, יישלחו זמן בתחילת אוקטובר או באמצע אוקטובר.

כוונת הוצאה משימוש | Chromestatus tracker | באג ב-Chromium

העברת getContextAttributes() מאחורי דגל

הפונקציה getContextAttributes() נתמכת CanvasRenderingContext2D מאז 2013. עם זאת, התכונה לא הייתה חלק מתקן כלשהו ולא הוגדרה חלק מסרטון מסוים מאז. צריך להטמיע אותו מאחורי סימון בשורת הפקודה --enable-experimental-canvas-features, אך בטעות לא. הפיקוח הזה תוקן ב-Chrome 60. לדעתנו, השינוי הוא בטוח, כי אין נתונים שמראים שמישהו משתמש בשיטה.

באג ב-Chromium

הסרת Headers.prototype.getAll()

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

כוונת הסרה | Chromestatus tracker | באג ב-Chromium

מסירים את IndexDB.webkitGetDatabaseNames()

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

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

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

התכונה הזו הוצאה משימוש בגרסה 58 של Chrome, ועכשיו אנחנו מסירים אותה.

כוונת הסרה | Chromestatus tracker | באג ב-Chromium

הסרה של WEBKIT_KEYFRAMES_TERMS ו-WEBKIT_KEYFRAME_DOMAIN

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

כוונת הסרה | Chromestatus tracker | באג ב-Chromium

ממשק משתמש

נדרשת תנועת משתמש לתיבות דו-שיח לפני פענוח

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

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

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

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