כמעט בכל גרסה של Chrome אנחנו רואים מספר משמעותי של עדכונים ושיפורים למוצר, לביצועים שלו וליכולות של פלטפורמת האינטרנט.
ב-Chrome 50 (תאריך הבטא המשוער: 10 עד 17 במרץ) יש מספר שינויים ב-Chrome. הרשימה הזו עשויה להשתנות בכל עת.
מטמון האפליקציה הוצא משימוש בהקשרים לא מאובטחים
TL;DR: כדי לעכב סקריפטים חוצי-אתרים, אנחנו מוציאים משימוש את מטמון האפליקציה במקורות לא מאובטחים. אנחנו צופים שב-Chrome בגרסה 52 היא תפעל רק במקורות שמציגים תוכן ב-HTTPS.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
מטמון האפליקציה הוא תכונה שמאפשרת גישה אופליין ועקבית למקור, שמהווה הסלמת הרשאות (privilege escalation) במקרה של מתקפת סקריפטים חוצת-אתרים. כחלק ממאמץ גדול יותר להסיר תכונות מתקדמות במקורות לא מאובטחים.
Chrome מסיר את וקטור ההתקפה באמצעות אישורו רק ב-HTTPS. אנחנו מוציאים משימוש את התמיכה ב-HTTP ב-Chrome 50, ואנחנו מצפים שנסיר אותה לחלוטין ב-Chrome 52.
Document.defaultCharset הוסר
אמ;לק: document.defaultCharset
הוסר כדי לשפר את התאימות למפרט.
Intent to Remove | Chromestatus tracker | בעיית CRBug
המאפיין document.defaultCharset
, שהוצא משימוש ב-Chrome 49, הוא מאפיין לקריאה בלבד, שמחזיר את קידוד התווים שמוגדר כברירת מחדל במערכת של המשתמש, על סמך ההגדרות האזוריות שלו. לא נמצא שימושי לשמירת הערך הזה בגלל האופן שבו דפדפנים משתמשים בפרטי קידוד התווים בתגובת ה-HTTP או במטא תג שמוטמע בדף.
במקום זאת, השתמשו ב-document.characterSet
כדי לקבל את הערך הראשון שצוין בכותרת ה-HTTP. אם הוא לא קיים, הערך יופיע
במאפיין charset
של הרכיב <meta>
(לדוגמה, <meta
charset="utf-8">
). אם אף אחת מהאפשרויות האלה לא זמינה,
document.characterSet
תהיה הגדרת המערכת של המשתמש.
בבעיה הזו ב-GitHub אפשר לקרוא דיון נוסף לגבי הסיבה שלא לעסוק בהמלצה הזו באופן מפורש.
מאפיין של משאב משנה הוסר מרכיב הקישור
TL;DR: הסרה של תמיכה בערך subresource
עבור המאפיין rel
של
HTMLLinkElement
.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הכוונה של המאפיין subresource
ב-<link> הייתה לשלוף מראש
משאב במהלך הזמן שבו הדפדפן לא פעיל. לאחר שדפדפן הוריד דף, הוא יכול היה להוריד מראש משאבים כמו דפים אחרים, כך שכאשר המשתמשים ביקשו אותם, הם יוכלו פשוט לאחזר אותם ממטמון הדפדפן.
לגבי המאפיין subresource
היו כמה בעיות. דבר ראשון, זה אף פעם לא
עבד כמצופה. הסתיימה ההורדה של המשאבים המקושרים עם עדיפות נמוכה. המאפיין
מעולם לא הוטמע באף דפדפן מלבד Chrome. בהטמעה של Chrome היה באג שגרם להורדה כפולה של משאבים.
למפתחים שרוצים לשפר את חוויית המשתמש באמצעות טעינה מראש של תוכן יש כמה אפשרויות, שההתאמה האישית שלהן היא ביותר לבנות קובץ שירות (service worker) כדי לנצל את היתרונות של טעינה מראש ושל ה-API של המטמון. פתרונות נוספים
כוללים ערכים אחרים למאפיין rel
כולל preconnect
, prefetch
, preload
, prerender
. חלק מהאפשרויות האלה הן ניסיוניות, וייתכן שלא תהיה תמיכה בהן באופן נרחב.
הסרת החלופה של גרסת TLS לא מאובטחת
TL;DR: הסרת מנגנון לאילוץ שרתים להחזיר נתונים באמצעות גרסאות TLS (אבטחת שכבת התעבורה) או פחות מאובטחות.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
ב-Transport Layer Security (TLS) יש תמיכה במנגנון לניהול משא ומתן על גרסאות, כדי שאפשר יהיה להוסיף גרסאות TLS חדשות בלי לפגוע בתאימות. חלק מהשרתים הטמיעו את התכונה הזו כך שדפדפנים נדרשו להשתמש בנקודות קצה (endpoint) לא מאובטחות כחלופה. לכן תוקפים יכולים לאלץ כל אתר, ולא רק אתרים שהוגדרו באופן שגוי, לנהל משא ומתן לגבי גרסאות חלשות יותר של TLS.
האתרים המושפעים לא יוכלו להתחבר אל ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
. האדמינים צריכים לוודא שתוכנת השרת שלהם מעודכנת. אם הבעיה עדיין לא נפתרה, יש לפנות לספק של תוכנת השרת כדי לבדוק אם יש תיקון.
הסרה של מקלדתEvent.prototype.keyLocation
TL;DR: הסרה של כינוי לא נחוץ למאפיין
Keyboard.prototype.location
.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
המאפיין הזה הוא פשוט כינוי למאפיין
Keyboard.prototype.location
, שמאפשר להבחין בין מקשים שנמצאים
בכמה מקומות במקלדת. לדוגמה, שני המאפיינים מאפשרים למפתחים להבחין בין שני המקשים Enter
במקלדת מורחבת.
רכיבי handler של שגיאות והצלחה שנדרשים בשיטות RTCPeerConnection
TL;DR: ל-WebRTC
שיטות RTCPeerConnection createOffer()
ו-createAnswer()
נדרשים עכשיו handler של שגיאות וגם handler של הצלחה. בעבר אפשר היה להפעיל את השיטות האלה רק עם handler שהצליח. השימוש הזה הוצא משימוש.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
ב-Chrome 49 הוספנו אזהרה אם תתבצע קריאה ל-setLocalDescription()
או ל-setRemoteDescription()
בלי לספק מטפל שגיאות. הארגומנט של מטפל השגיאות הוא חובה החל מגרסה 50 של Chrome.
התהליך הזה הוא חלק מפינוי הדרך להוספת הבטחות לשיטות האלה, כפי שנדרש במפרט של WebRTC.
כך תוכלו לראות דוגמה להדגמה של RTCPeerConnection ב-WebRTC (main.js, שורה 126):
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
שימו לב של-setLocalDescription()
וגם ל-setRemoteDescription()
יש מטפל שגיאות. דפדפנים ישנים יותר המצפים רק handler של הצלחה, פשוט יתעלמו מהארגומנט של מטפל השגיאות אם הוא קיים. הפעלת הקוד הזה בדפדפן ישן לא תגרום לחריגה.
באופן כללי, לאפליקציות WebRTC לייצור, מומלץ להשתמש ב-adapter.js
, shim שמתוחזק על ידי הפרויקט של WebRTC, כדי לבודד אפליקציות מפני שינויים במפרטים והפרשי תחילית.
אין יותר תמיכה ב-XMLHttpRequestProgressEvent
TL;DR: ממשק XMLHttpRequestProgressEvent
יוסר, יחד עם המאפיינים position
ו-totalSize
.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
האירוע הזה קיים כדי לתמוך בנכסי התאימות position
ו-totalSize
של Gecko. התמיכה בכל השלושה הופסקה ב-Mozilla 22, והפונקציונליות הוחלפה על ידי ProgressEvent
.
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
הסרה של תוספי מדיה מוצפנים עם קידומת
TL;DR: תוספי מדיה מוצפנים עם קידומת הוסרו לטובת החלפה מבוססת-מפרט ללא קידומת.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
ב-Chrome 42 שלחנו גרסה מבוססת-מפרט של תוספי מדיה מוצפנים ללא קידומת. ה-API הזה משמש לאיתור ולבחירה במערכות לניהול זכויות דיגיטליות ולשימוש בהן, לשימוש ב-HTMLMediaElement
.
זה היה לפני כמעט שנה. ומכיוון שלגרסה ללא קידומת יש יותר יכולות מאשר הגרסה עם התחילית, הגיע הזמן להסיר את גרסת ה-API עם הקידומת.
הסרת התמיכה במאפייני SVGElement.offset
TL;DR: נכסים של SVGElement הושמטו לטובת נכסים עם תמיכה רחבה יותר ב-HTMLElement
.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
נכסי Offset נתמכים כבר זמן רב על ידי HTMLElement
וגם SVGElement
, אבל ב-Gecko וב-Edge יש תמיכה בהם רק ב-HTMLElement
. כדי לשפר את העקביות בין דפדפנים, המאפיינים האלה הוצאו משימוש ב-Chrome 48 ועכשיו הם מוסרים.
נכסים מקבילים הם חלק מ-HTMLElement
, אבל מפתחים שמחפשים חלופה יכולים גם להשתמש ב-getBoundingClientRect()