Ngừng sử dụng và xoá trong Chrome 60

Joe Medley
Joe Medley

Trong hầu hết mọi phiên bản Chrome, chúng tôi nhận thấy có rất nhiều bản cập nhật và những 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 Web Nền tảng. Bài viết này mô tả việc ngừng sử dụng và xoá trong Chrome 60, đang trong giai đoạn thử nghiệm kể 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 bảo mật

Web Crypto API được hỗ trợ vì Chrome 37 luôn hoạt động trên các trang nguồn gốc. Do chính sách lâu dài của Chrome về việc ưu tiên các nguồn gốc bảo mật cho các tính năng mạnh mẽ, crypto.subtle không chỉ hiển thị trên các nguồn gốc an toàn.

Ý định xoá | Lỗi Chromium

Xoá các thao tác điều hướng khung hình trên cùng do nội dung khởi tạo khỏi các URL dữ liệu

Do không quen thuộc với những người dùng trình duyệt không có chuyên môn kỹ thuật, chúng tôi ngày càng thấy giao thức data: được dùng để giả mạo và lừa đảo cuộc tấn công. Để ngăn điều này, chúng tôi sẽ chặn không cho các trang web tải URL data: trong khung hình trên cùng. Điều này áp dụng cho thẻ <a>, window.open window.location và các cơ chế tương tự. Lược đồ data: vẫn sẽ hoạt động cho tài nguyên do một trang tải.

Tính năng này không còn được dùng trong Chrome 58 và hiện đã bị loại bỏ.

Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium

Tạm thời vô hiệu hoá navigation.sendBeacon() cho một số blob

Đã có thể sử dụng hàm navigator.sendBeacon() 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ỳ ý thuộc loại không được liệt kê theo CORS. Chúng tôi cho rằng đây là một tiềm năng mối đe doạ bảo mật, mặc dù chưa có ai cố gắng khai thác công cụ này. Vì chúng tôi KHÔNG có biện pháp khắc phục ngay lập tức hợp lý cho vấn đề này, tạm thời, sendBeacon() không thể không gọi được trên các blob có loại KHÔNG được liệt kê 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 quay lại Chrome 59.

Lỗi Chromium

CSS

Làm cho bộ kết hợp con cháu xuyên bóng hoạt động như tổ hợp con cháu

Bộ kết hợp con đổ bóng (>>>), một phần của Mô-đun xác định phạm vi CSS cấp 1 , nhằm khớp với phần tử con của một phần tử đối tượng cấp trên cụ thể ngay cả khi chúng xuất hiện bên trong một cây bóng đổ. Việc này có một số hạn chế. Trước tiên, theo thông số kỹ thuật, việc này chỉ có thể được sử dụng trong lệnh gọi JavaScript như querySelector() và không làm việc trong biểu định kiểu. Quan trọng hơn, các nhà cung cấp trình duyệt không thể làm như vậy hoạt động vượt ra ngoài một cấp độ của DOM tối.

Do đó, bộ kết hợp con đã bị xoá khỏi các thông số kỹ thuật có liên quan bao gồm Shadow DOM phiên bản 1. Thay vì phá vỡ các trang web bằng cách xóa bộ chọn này từ Chromium, thay vào đó, chúng tôi đã chọn đặt bí danh con cháu hiệu ứng bóng đổ bộ kết hợp đến bộ kết hợp con. Hành vi ban đầu là không dùng nữa trong Chrome 45. Hành vi mới này được triển khai trong Chrome 61.

Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium

JavaScript

Không dùng nữa 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 đều có đã xoá thuộc tính này khỏi các mô-đun triển khai của họ. Mặc dù chức năng này được cho là ít được sử dụng, nhưng cũng được cho là có một số trẻ vị thành niên Rủi ro về khả năng tương tác với các trình duyệt dựa trên Edge và WebKit không phải Safari trong đó getStreamById() vẫn được hỗ trợ. Nhà phát triển cần một giải pháp thay thế Bạn có thể tìm thấy mã ví dụ trong Ý định cần xoá ở bên dưới.

Tính năng xoá được xử lý 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 của SVG. Vì chỉ có một số ít lần truy cập cho phương thức này trong httplưu trữ, nên không được dùng nữa trong Chrome 60. Quá trình xoá dự kiến sẽ được áp dụng trong Chrome 62, tức là phiên bản mới này sẽ giao hàng vào đầu hoặc giữa tháng 10.

Ý định không còn được dùng nữa | Trình theo dõi trạng thái Chrome | Lỗi Chromium

Di chuyển getContextAttributes() 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à chưa được một phần kể từ thời điểm đó. Điều này đáng lẽ phải được triển khai sau --enable-experimental-canvas-features cờ hiệu dòng lệnh, nhưng đã bị nhầm lẫn thì không. Trong Chrome 60, sự giám sát này đã được khắc phục. Người ta tin rằng điều này thì thay đổi đều 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.

Lỗi Chromium

Xoá Headers.prototype.getAll()

Hàm Headers.prototype.getAll() đang bị xoá theo giá trị mới nhất phiên bản của Thông số kỹ thuật tìm nạp.

Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium

XoáindexDB.webkitGetDatabaseNames()

Chúng tôi đã thêm tính năng này khi Cơ sở dữ liệu được lập chỉ mục còn khá mới mẻ trong Chrome và có thêm tiền tố thật sự giận dữ. API trả về không đồng bộ danh sách cơ sở dữ liệu hiện có cùng một nguồn gốc. Đây là điều hợp lý.

Rất tiếc là thiết kế có nhiều sai sót, khiến kết quả có thể sớm lỗi thời vì chúng được trả về, nên chỉ có thể dùng để ghi nhật ký, chứ không thể dùng logic ứng dụng. Chiến lược phát hành đĩa đơn Vấn đề trên github theo dõi/đường liên kết đến thảo luận trước đây về các phương án thay thế, mà đòi hỏi phải có một phương pháp khác. Mặc dù các nhà phát triển luôn quan tâm đến chương trình này, nhưng do thiếu các công cụ trình duyệt tiến trình duyệt web, vấn đề đã được các tác giả thư viện giải quyết.

Các nhà phát triển cần chức năng này cần 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 bảng chung là một cơ sở dữ liệu khác để theo dõi tên của cơ sở dữ liệu.

Tính năng này không còn được dùng trong Chrome 58 và hiện đã bị loại bỏ.

Ý định xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium

Xóa WEBKIT_KEYFRAMES_QU và WEBKIT_KEYFRAME_QU

Hằng số WEBKIT_KEYFRAMES_RULEWEBKIT_KEYFRAME_RULE không chuẩn bị xoá khỏi Quy tắc CSS. Thay vào đó, nhà phát triển nên dùng KEYFRAMES_RULEKEYFRAME_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

Từ Chrome 60 trở đi, hộp thoại beforeunload sẽ chỉ xuất hiện nếu khung cố gắng hiển thị quảng cáo đã 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 được nhúng nào đã nhận được một cử chỉ như vậy). Xin làm rõ, đây không phải là thay đổi đối với việc gửi sự kiện beforeunload. Đó chỉ là một thay đổi đối với liệu hộp thoại có xuất hiện hay không.

Hộp thoại beforeunload là hộp thoại chế độ ứng dụng. Như vậy, vốn dĩ thù địch, nghĩa là ứng dụng này 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 quyết định. Có nhiều trường hợp sử dụng tích cực tính năng này. Ví dụ: Trường hợp này thường được dùng để cảnh báo cho người dùng khi họ sẽ mất dữ liệu bằng cách đi theo chỉ dẫn.

Mặc dù khả năng cung cấp văn bản cho hộp thoại beforeunload của trang là bị xoá cách đây một thời gian, hộp thoại beforeunload vẫn là một phương tiện vi phạm. Ngang bằng Cụ thể, hộp thoại beforeunload là một thành phần của các trang web lừa đảo, nơi âm thanh tự động phát và văn bản đe doạ cung cấp ngữ cảnh trong đó Chromium với điều kiện "bạn có chắc chắn muốn rời khỏi trang này không" tin nhắn trở nên đáng lo ngại.

Chúng ta muốn luồn kim và chỉ cho phép sử dụng hiệu quả beforeunload . Cách sử dụng hợp lý hộp thoại là những trường hợp người dùng có trạng thái thua. 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ể có bất kỳ trạng thái có thể bị mất và do đó, chúng tôi không có nguy cơ mất dữ liệu người dùng chặn hộp thoại trong trường hợp đó.