Trong hầu hết các phiên bản Chrome, chúng ta đều thấy một số lượng đáng kể các bản cập nhật và cải tiến đối với sản phẩm, hiệu suất của sản phẩm cũng như các tính năng của nền tảng web.
Trong Chrome 50 (Ngày phát hành beta dự kiến: 10 đến 17 tháng 3), có một số thay đổi đối với Chrome. Danh sách này có thể thay đổi bất cứ lúc nào.
AppCache không còn được dùng trên các bối cảnh không an toàn
Tóm tắt: Để ngăn chặn việc tập lệnh trên nhiều trang web, chúng tôi sẽ ngừng sử dụng AppCache trên các nguồn gốc không an toàn. Chúng tôi dự kiến rằng trong Chrome 52, tính năng này sẽ chỉ hoạt động trên các nguồn gốc phân phát nội dung qua HTTPS.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
AppCache là một tính năng cho phép truy cập liên tục và ngoại tuyến vào một nguồn gốc. Đây là một đặc quyền cấp cao cho một cuộc tấn công tập lệnh trên nhiều trang web. Đây là một phần trong nỗ lực lớn hơn nhằm xoá các tính năng mạnh mẽ trên các nguồn gốc không an toàn.
Chrome sẽ loại bỏ phương thức tấn công này bằng cách chỉ cho phép phương thức này qua HTTPS. Chúng tôi sẽ ngừng hỗ trợ HTTP trong Chrome 50 và dự kiến sẽ loại bỏ hoàn toàn tính năng này trong Chrome 52.
Xoá Document.defaultCharset
Tóm tắt: document.defaultCharset
đã bị xoá để cải thiện khả năng tuân thủ thông số kỹ thuật.
Ý định xoá | Trình theo dõi trạng thái Chrome | Vấn đề về CRBug
document.defaultCharset
(không dùng nữa trong Chrome 49) là một thuộc tính chỉ có thể đọc, trả về mã hoá ký tự mặc định của hệ thống của người dùng dựa trên chế độ cài đặt theo khu vực của họ. Việc duy trì giá trị này chưa được coi là hữu ích do cách các trình duyệt sử dụng thông tin mã hoá ký tự trong Phản hồi HTTP hoặc trong thẻ meta được nhúng trên trang.
Thay vào đó, hãy sử dụng document.characterSet
để lấy giá trị đầu tiên được chỉ định trong tiêu đề HTTP. Nếu không có thuộc tính đó, bạn sẽ nhận được giá trị được chỉ định trong thuộc tính charset
của phần tử <meta>
(ví dụ: <meta
charset="utf-8">
). Cuối cùng, nếu không có thuộc tính nào trong số đó, document.characterSet
sẽ là chế độ cài đặt hệ thống của người dùng.
Bạn có thể đọc thêm nội dung thảo luận về lý do không chỉ rõ điều này trong vấn đề này trên GitHub
Xoá thuộc tính Subresource khỏi phần tử đường liên kết
TL;DR: Xoá tính năng hỗ trợ cho giá trị subresource
cho thuộc tính rel
của
HTMLLinkElement
.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Ý định của thuộc tính subresource
trên <link> là tải trước một tài nguyên trong thời gian rảnh của trình duyệt. Sau khi tải một trang xuống, trình duyệt có thể tải trước các tài nguyên như các trang khác để khi người dùng yêu cầu, họ chỉ cần truy xuất các tài nguyên đó từ bộ nhớ đệm của trình duyệt.
Thuộc tính subresource
gặp phải một số vấn đề. Thứ nhất, nó không bao giờ
hoạt động như dự kiến. Các tài nguyên được tham chiếu đã được tải xuống với mức độ ưu tiên thấp. Thuộc tính này chưa bao giờ được triển khai trên bất kỳ trình duyệt nào ngoài Chrome. Quá trình triển khai Chrome có một lỗi khiến tài nguyên bị tải xuống hai lần.
Nhà phát triển muốn cải thiện trải nghiệm người dùng thông qua việc tải trước nội dung có một số lựa chọn, trong đó tuỳ chỉnh được nhất là tạo một worker dịch vụ để tận dụng tính năng lưu vào bộ nhớ đệm trước và API Bộ nhớ đệm. Các giải pháp bổ sung bao gồm các giá trị khác cho thuộc tính rel
bao gồm preconnect
, prefetch
, preload
, prerender
. Một số tuỳ chọn này đang trong giai đoạn thử nghiệm và có thể chưa được hỗ trợ rộng rãi.
Xoá bản dự phòng cho phiên bản TLS không an toàn
TL;DR: Xoá cơ chế buộc máy chủ trả về dữ liệu bằng các phiên bản TLS kém hoặc không an toàn.
Ý định xóa | Trình theo dõi Chromestatus | Lỗi Chromium
Bảo mật tầng truyền tải (TLS) hỗ trợ cơ chế thương lượng phiên bản, cho phép giới thiệu các phiên bản TLS mới mà không làm mất khả năng tương thích. Một số máy chủ đã triển khai việc này theo cách yêu cầu trình duyệt sử dụng các điểm cuối không an toàn làm phương án dự phòng. Do đó, kẻ tấn công có thể buộc bất kỳ trang web nào, không chỉ những trang web được định cấu hình không chính xác, phải đàm phán để sử dụng các phiên bản TLS yếu hơn.
Các trang web bị ảnh hưởng sẽ không kết nối được với ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
. Quản trị viên cần đảm bảo phần mềm máy chủ của họ là phiên bản mới nhất. Nếu vẫn chưa giải quyết được vấn đề, hãy liên hệ với nhà cung cấp phần mềm máy chủ để xem có cách khắc phục nào không.
Xoá KeyboardEvent.prototype.keyLocation
TL;DR: Xoá bí danh không cần thiết cho thuộc tính Keyboard.prototype.location
.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Thuộc tính này chỉ là một bí danh cho thuộc tính Keyboard.prototype.location
, cho phép phân biệt giữa các phím nằm ở nhiều vị trí trên bàn phím. Ví dụ: cả hai thuộc tính này đều cho phép nhà phát triển phân biệt giữa hai phím Enter
trên bàn phím mở rộng.
Phương thức xử lý lỗi và thành công bắt buộc trong các phương thức RTCPeerConnection
TL;DR (Tóm tắt): Các phương thức WebRTC RTCPeerConnection createOffer()
và createAnswer()
hiện yêu cầu một trình xử lý lỗi cũng như một trình xử lý thành công. Trước đây, bạn chỉ có thể gọi các phương thức này bằng một trình xử lý thành công. Cách sử dụng đó không còn được dùng nữa.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Trong Chrome 49, chúng tôi đã thêm một cảnh báo nếu bạn gọi
setLocalDescription()
hoặc setRemoteDescription()
mà không cung cấp trình xử lý lỗi. Đối số trình xử lý lỗi là bắt buộc kể từ Chrome 50.
Đây là một phần của việc dọn đường để giới thiệu các lời hứa về các phương thức này, như yêu cầu của thông số kỹ thuật WebRTC.
Dưới đây là ví dụ về màn hình minh hoạ RTCPeerConnection của WebRTC (main.js, dòng 126):
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
Xin lưu ý rằng cả setLocalDescription()
và setRemoteDescription()
đều có trình xử lý lỗi. Các trình duyệt cũ chỉ mong đợi một trình xử lý thành công sẽ chỉ bỏ qua đối số trình xử lý lỗi nếu có; việc gọi mã này trong trình duyệt cũ sẽ không gây ra ngoại lệ.
Nói chung, đối với các ứng dụng WebRTC chính thức, bạn nên sử dụng adapter.js
, một trình bổ trợ do dự án WebRTC duy trì để tách biệt các ứng dụng khỏi các thay đổi về thông số kỹ thuật và sự khác biệt về tiền tố.
XMLHttpRequestProgressEvent không còn được hỗ trợ nữa
TL;DR: Giao diện XMLHttpRequestProgressEvent
sẽ bị xoá cùng với các thuộc tính position
và totalSize
.
Ý định xóa | Trình theo dõi Chromestatus | Lỗi Chromium
Sự kiện này tồn tại để hỗ trợ các thuộc tính tương thích với Gecko position
và
totalSize
. Hỗ trợ cho cả 3 chức năng này đã bị loại bỏ trong Mozilla 22 và chức năng này từ lâu đã được thay thế bằng 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
}
}
Xoá Tiện ích phương tiện đã mã hoá có tiền tố
TL;DR: Các tiện ích phương tiện được mã hoá có tiền tố đã bị xoá để thay thế bằng một tiện ích không có tiền tố dựa trên thông số kỹ thuật.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Trong Chrome 42, chúng tôi đã phát hành phiên bản tiện ích nội dung đa phương tiện được mã hoá dựa trên thông số kỹ thuật, không có tiền tố. API này dùng để khám phá, chọn và tương tác với các hệ thống Quản lý bản quyền kỹ thuật số để sử dụng với HTMLMediaElement
.
Đó là gần một năm trước. Và vì phiên bản không có tiền tố có nhiều tính năng hơn phiên bản có tiền tố, nên đã đến lúc xoá phiên bản có tiền tố của API.
Xoá tính năng hỗ trợ cho các thuộc tính SVGElement.offset
TL;DR: Các thuộc tính bù cho SVGElement đã bị loại bỏ để thay thế bằng các thuộc tính được hỗ trợ rộng rãi hơn trên HTMLElement
.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Cả HTMLElement
và SVGElement
đều hỗ trợ thuộc tính chênh lệch từ lâu. Tuy nhiên, Gecko và Edge chỉ hỗ trợ các thuộc tính này trên HTMLElement
. Để cải thiện tính nhất quán giữa các trình duyệt, các thuộc tính này không còn được dùng trong Chrome 48 và hiện đang bị xoá.
Mặc dù các thuộc tính tương đương là một phần của HTMLElement
, nhưng các nhà phát triển đang tìm kiếm một giải pháp thay thế cũng có thể sử dụng getBoundingClientRect()