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. Bài viết này mô tả các tính năng ngừng hoạt động và bị xoá trong Chrome 60, phiên bản đang trong giai đoạn thử nghiệm từ ngày 8 tháng 6. Danh sách này có thể thay đổi bất cứ lúc nào.
Bảo mật
crypto.subtle hiện yêu cầu một nguồn gốc an toàn
Web Crypto API được hỗ trợ kể từ Chrome 37 luôn hoạt động trên các nguồn gốc không an toàn. Do chính sách lâu đời của Chrome về việc ưu tiên các nguồn gốc an toàn cho các tính năng mạnh mẽ, crypto.subtle
không chỉ xuất hiện trên các nguồn gốc an toàn.
Xoá các thao tác điều hướng khung trên cùng do nội dung khởi tạo đến URL dữ liệu
Do người dùng trình duyệt không chuyên không quen thuộc với các giao thức này, nên chúng tôi ngày càng thấy nhiều trường hợp giao thức data:
được dùng trong các cuộc tấn công giả mạo và lừa đảo. Để ngăn chặn điều này, chúng tôi sẽ chặn các trang web tải URL data:
trong khung trên cùng. Điều này áp dụng cho các thẻ <a>
, window.open
, window.location
và các cơ chế tương tự. Lược đồ data:
sẽ vẫn hoạt động đối với các tài nguyên do một trang tải.
Tính năng này không được dùng nữa trong Chrome 58 và hiện đã bị xoá.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Tạm thời tắt navigator.sendBeacon() cho một số blob
Hàm navigator.sendBeacon()
đã có sẵn
kể từ Chrome 39.
Như đã triển khai ban đầu, đối số data
của hàm có thể chứa bất kỳ blob tuỳ ý nào có loại không nằm trong danh sách an toàn CORS. Chúng tôi cho rằng đây là một mối đe doạ bảo mật tiềm ẩn, mặc dù chưa có ai cố gắng khai thác lỗ hổng này. Vì chúng tôi KHÔNG có biện pháp khắc phục hợp lý ngay lập tức cho vấn đề này, nên tạm thời, bạn không thể gọi sendBeacon()
trên các blob có loại KHÔNG được liệt kê trong danh sách an toàn CORS.
Mặc dù thay đổi này đã được triển khai cho Chrome 60, nhưng sau đó đã được hợp nhất trở lại Chrome 59.
CSS
Làm cho bộ kết hợp con cháu xuyên bóng hoạt động như bộ kết hợp con cháu
Toán tử kết hợp con xuyên bóng (>>>
), một phần của Mô-đun CSS Scoping cấp 1, nhằm so khớp các phần tử con của một phần tử cấp trên cụ thể ngay cả khi chúng xuất hiện bên trong cây bóng. Cách này có một số hạn chế.
Trước tiên, theo thông số kỹ thuật, bạn chỉ có thể sử dụng thuộc tính này trong các lệnh gọi JavaScript như querySelector()
và không hoạt động trong các tệp định kiểu. Quan trọng hơn, các nhà cung cấp trình duyệt không thể làm cho tính năng này hoạt động ngoài một cấp độ của Shadow DOM.
Do đó, bộ kết hợp con cháu đã bị xoá khỏi các thông số kỹ thuật liên quan, bao gồm cả Shadow DOM v1. Thay vì phá vỡ các trang web bằng cách xoá bộ chọn này khỏi Chromium, chúng tôi đã chọn đặt bí danh cho bộ kết hợp con cháu xuyên bóng với bộ kết hợp con cháu. Hành vi ban đầu đã không còn được dùng trong Chrome 45. Hành vi mới được triển khai trong Chrome 61.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
JavaScript
Ngừng sử dụng và xoá RTCPeerConnection.getStreamById()
Gần hai năm trước, getStreamById()
đã bị xoá khỏi thông số kỹ thuật WebRTC. Hầu hết các trình duyệt khác đã xoá tính năng này khỏi quá trình triển khai. Mặc dù hàm này được cho là ít được sử dụng, nhưng cũng có một số rủi ro nhỏ về khả năng tương tác với Edge và các trình duyệt dựa trên WebKit ngoài Safari, nơi getStreamById()
vẫn được hỗ trợ. Những nhà phát triển cần triển khai phương án thay thế có thể tìm thấy mã ví dụ trong phần Ý định xoá bên dưới.
Tính năng này sẽ bị xoá trong Chrome 62.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Ngừng sử dụng SVGPathElement.getPathSegAtLength
Hơn hai năm trước, getPathSegAtLength()
đã bị xoá khỏi thông số kỹ thuật SVG. Vì chỉ có một số ít lượt truy cập cho phương thức này trong httparchive, nên phương thức này sẽ không còn được dùng nữa trong Chrome 60. Việc xoá sẽ diễn ra trong Chrome 62, phiên bản này sẽ được phát hành vào đầu hoặc giữa tháng 10.
Ý định ngừng sử dụng | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Di chuyển getContextAttributes() phía sau một cờ
Hàm getContextAttributes()
được hỗ trợ trên
CanvasRenderingContext2D
kể từ năm 2013. Tuy nhiên, tính năng này không thuộc bất kỳ tiêu chuẩn nào và cũng không trở thành tiêu chuẩn kể từ thời điểm đó. Cờ này lẽ ra phải được triển khai sau cờ dòng lệnh --enable-experimental-canvas-features
, nhưng đã bị nhầm lẫn. Trong Chrome 60, lỗi này đã được khắc phục. Chúng tôi tin rằng thay đổi này là an toàn vì không có dữ liệu nào cho thấy có ai đang sử dụng phương thức này.
Xoá Headers.prototype.getAll()
Hàm Headers.prototype.getAll()
đang bị xoá theo phiên bản mới nhất của quy cách Tìm nạp.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Xoá indexedDB.webkitGetDatabaseNames()
Chúng tôi đã thêm tính năng này khi Indexed DB còn khá mới trong Chrome và việc thêm tiền tố đang rất thịnh hành. API này trả về một danh sách tên cơ sở dữ liệu hiện có trong một nguồn gốc một cách không đồng bộ, điều này có vẻ hợp lý.
Rất tiếc, thiết kế này có khiếm khuyết, ở chỗ kết quả có thể đã lỗi thời ngay khi được trả về, vì vậy, bạn chỉ có thể sử dụng thiết kế này để ghi nhật ký chứ không phải logic ứng dụng nghiêm túc. Vấn đề trên github theo dõi/liên kết đến nội dung thảo luận trước đó về các giải pháp thay thế, đòi hỏi một phương pháp khác. Mặc dù các nhà phát triển thỉnh thoảng quan tâm đến vấn đề này, nhưng do thiếu tiến trình trên nhiều trình duyệt, nên các tác giả thư viện đã giải quyết vấn đề này.
Nhà phát triển cần chức năng này cần phải phát triển giải pháp của riêng mình. Ví dụ: các thư viện như Dexie.js sử dụng một bảng toàn cục, bản thân bảng này cũng là một cơ sở dữ liệu khác để theo dõi tên của các cơ sở dữ liệu.
Tính năng này không được dùng nữa trong Chrome 58 và hiện đã bị xoá.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Xoá WEBKIT_KEYFRAMES_RULE và WEBKIT_KEYFRAME_RULE
Các hằng số WEBKIT_KEYFRAMES_RULE
và WEBKIT_KEYFRAME_RULE
không chuẩn sẽ bị xoá khỏi Quy tắc CSS.
Thay vào đó, nhà phát triển nên sử dụng KEYFRAMES_RULE
và KEYFRAME_RULE
.
Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium
Giao diện người dùng
Yêu cầu cử chỉ của người dùng đối với hộp thoại beforeunload
Kể từ Chrome 60 trở đi, hộp thoại beforeunload
sẽ chỉ xuất hiện nếu khung đang cố gắng hiển thị hộp thoại đó đã nhận được cử chỉ của người dùng hoặc tương tác của người dùng (hoặc nếu bất kỳ khung nhúng nào đã nhận được cử chỉ như vậy). Xin làm rõ rằng đây không phải là thay đổi về việc gửi sự kiện beforeunload
. Đây chỉ là thay đổi về việc hộp thoại có hiển thị hay không.
Hộp thoại beforeunload
là một hộp thoại theo phương thức cửa sổ bật lên của ứng dụng. Do đó, bản chất của nó là không thân thiện với người dùng, nghĩa là nó phản hồi thao tác điều hướng của người dùng bằng cách đặt câu hỏi về quyết định của người dùng. Tính năng này có nhiều cách sử dụng tích cực. Ví dụ: thông báo này thường được dùng để cảnh báo người dùng khi họ sẽ mất dữ liệu bằng cách điều hướng.
Mặc dù khả năng cung cấp văn bản cho hộp thoại beforeunload
của trang đã bị xoá cách đây không lâu, nhưng hộp thoại beforeunload
vẫn là một vectơ lạm dụng. Cụ thể, hộp thoại beforeunload
là một thành phần của các trang web lừa đảo, trong đó âm thanh phát tự động và văn bản đe doạ tạo ra một ngữ cảnh khiến thông báo "bạn có chắc chắn muốn rời khỏi trang này" do Chromium cung cấp trở nên đáng lo ngại.
Chúng ta muốn đi đúng hướng và chỉ cho phép sử dụng hộp thoại beforeunload
một cách hợp lý. Bạn nên sử dụng hộp thoại trong trường hợp người dùng có trạng thái có thể bị mất. Nếu người dùng chưa từng tương tác với trang, thì người dùng không thể mất trạng thái nào. Do đó, chúng ta không có nguy cơ mất dữ liệu người dùng bằng cách chặn hộp thoại trong trường hợp đó.