Di hampir setiap versi Chrome, kami melihat sejumlah update dan peningkatan yang signifikan pada produk, performanya, dan juga kemampuan Platform Web. Artikel ini menjelaskan penghentian penggunaan dan penghapusan di Chrome 60, yang masih dalam versi beta per 8 Juni. Daftar ini dapat berubah sewaktu-waktu.
Keamanan
crypto.subtle kini memerlukan origin yang aman
Web Crypto API
yang telah didukung sejak Chrome 37 selalu berfungsi pada origin
yang tidak aman. Karena kebijakan Chrome yang sudah lama ada,
lebih memilih origin yang aman untuk fitur canggih,
crypto.subtle
tidak hanya terlihat di origin yang aman.
Rencana Penghapusan | Bug Chromium
Menghapus navigasi bingkai atas yang dimulai konten ke URL data
Karena mereka tidak terbiasa dengan pengguna browser nonteknis, sekarang
kami semakin melihat skema data:
yang digunakan dalam serangan spoofing dan
phishing. Untuk mencegah hal ini, kami memblokir halaman web agar tidak memuat URL data:
di frame atas. Hal ini berlaku untuk tag <a>
, window.open
,
window.location
, dan mekanisme serupa. Skema data:
akan tetap berfungsi untuk
resource yang dimuat oleh halaman.
Fitur ini tidak digunakan lagi di Chrome 58 dan kini telah dihapus.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Menonaktifkan navigator.sendBeacon() untuk beberapa blob untuk sementara
Fungsi navigator.sendBeacon()
telah tersedia
sejak Chrome 39.
Seperti yang pertama kali diimplementasikan, argumen data
fungsi dapat berisi blob apa pun yang jenisnya tidak dimasukkan ke dalam daftar aman CORS. Kami yakin hal ini adalah potensi
ancaman keamanan, meskipun belum ada yang mencoba mengeksploitasinya. Karena kami TIDAK
memiliki perbaikan langsung yang wajar untuk masalah tersebut, untuk sementara, sendBeacon()
tidak dapat
lagi dipanggil pada blob yang jenisnya TIDAK dimasukkan ke dalam daftar aman CORS.
Meskipun perubahan ini diterapkan untuk Chrome 60, perubahan ini telah digabungkan kembali ke Chrome 59.
CSS
Membuat kombinator turunan yang menembus bayangan berperilaku seperti kombinator turunan
Kombinator turunan shadow-piercing (>>>
), bagian dari
Modul Cakupan CSS Level 1
, dimaksudkan untuk mencocokkan turunan dari elemen ancestor tertentu
meskipun elemen tersebut muncul di dalam pohon bayangan. Cara ini memiliki beberapa keterbatasan.
Pertama, per spesifikasi, elemen
hanya dapat digunakan dalam panggilan JavaScript seperti querySelector()
dan tidak
berfungsi di stylesheet. Lebih penting lagi, vendor browser tidak dapat membuatnya
berfungsi di luar satu level Shadow DOM.
Akibatnya, kombinator turunan telah dihapus dari spesifikasi yang relevan termasuk Shadow DOM v1. Daripada merusak halaman web dengan menghapus pemilih ini dari Chromium, kami memilih untuk memberi alias pada kombinator turunan yang menembus bayangan ke kombinator turunan. Perilaku asli tidak digunakan lagi di Chrome 45. Perilaku baru ini diterapkan di Chrome 61.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
JavaScript
Menghentikan penggunaan dan menghapus RTCPeerConnection.getStreamById()
Hampir dua tahun yang lalu, getStreamById()
dihapus dari spesifikasi WebRTC. Sebagian besar browser lain telah
menghapusnya dari implementasinya. Meskipun diyakini sedikit digunakan, fungsi ini juga diyakini ada beberapa risiko interoperabilitas kecil dengan browser berbasis Edge dan WebKit selain Safari yang masih mendukung getStreamById()
. Developer yang membutuhkan implementasi
alternatif dapat menemukan kode contoh di Intent to Remove, di bawah ini.
Penghapusan dilakukan di Chrome 62.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Menghentikan penggunaan SVGPathElement.getPathSegAtLength
Lebih dari dua tahun yang lalu, getPathSegAtLength()
dihapus dari spesifikasi SVG.
Karena hanya ada sedikit hit untuk metode ini di httparchive, metode ini
tidak digunakan lagi di Chrome 60. Penghapusan diperkirakan akan dilakukan di Chrome 62, yang
akan dirilis pada awal atau pertengahan Oktober.
Rencana Penghentian Penggunaan | Pelacak Chromestatus | Bug Chromium
Memindahkan getContextAttributes() di belakang flag
Fungsi getContextAttributes()
telah didukung di
CanvasRenderingContext2D
sejak 2013. Namun, fitur ini bukan bagian dari standar apa pun dan belum menjadi
bagian dari standar sejak saat itu. Ini seharusnya sudah diterapkan di belakang
tanda command line --enable-experimental-canvas-features
, tetapi secara keliru
tidak diterapkan. Pada Chrome 60, kesalahan ini telah diperbaiki. Perubahan ini diyakini aman, karena tidak ada data yang menunjukkan bahwa ada orang yang menggunakan metode tersebut.
Menghapus Headers.prototype.getAll()
Fungsi Headers.prototype.getAll()
dihapus sesuai dengan versi spesifikasi Fetch terbaru.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Menghapus indexedDB.webkitGetDatabaseNames()
Kami menambahkan fitur ini saat Indexed DB relatif baru di Chrome dan penggunaan awalan adalah hal yang populer. API secara asinkron menampilkan daftar nama database yang ada di origin, yang tampaknya cukup logis.
Sayangnya, desain ini memiliki kekurangan, sehingga hasilnya mungkin sudah tidak berlaku segera setelah ditampilkan, sehingga benar-benar hanya dapat digunakan untuk logging, bukan logika aplikasi yang serius. Masalah github melacak/menautkan ke diskusi sebelumnya tentang alternatif, yang akan memerlukan pendekatan berbeda. Meskipun ada minat yang tidak diinginkan oleh developer, mengingat kurangnya progres lintas browser, masalah tersebut telah diatasi oleh penulis library.
Developer yang membutuhkan fungsi ini perlu mengembangkan solusi mereka sendiri. Library seperti Dexie.js misalnya menggunakan tabel global yang merupakan database lain untuk melacak nama database.
Fitur ini tidak digunakan lagi di Chrome 58 dan kini telah dihapus.
Rencana Penghapusan | Pelacak Chromestatus | Bug Chromium
Hapus WEBKIT_KEYFRAMES_Rules dan WEBKIT_KEYFRAME_Rules
Konstanta WEBKIT_KEYFRAMES_RULE
dan WEBKIT_KEYFRAME_RULE
non-standar
dihapus dari
Aturan CSS.
Sebagai gantinya, developer sebaiknya menggunakan KEYFRAMES_RULE
dan KEYFRAME_RULE
.
Rencana Penghapusan | Pelacak Chromestatus | Bug Chromium
Antarmuka Pengguna
Memerlukan gestur pengguna untuk dialog beforeunload
Mulai Chrome 60 dan seterusnya, dialog beforeunload
hanya akan muncul jika frame yang mencoba menampilkannya telah menerima gestur pengguna atau interaksi pengguna (atau jika frame tersemat telah menerima gestur tersebut). Agar lebih jelas, ini bukan
perubahan pada pengiriman peristiwa beforeunload
. Ini hanyalah perubahan pada
apakah dialog ditampilkan.
Dialog beforeunload
adalah kotak dialog modal aplikasi. Dengan demikian, pada dasarnya
bertentangan dengan pengguna, yang berarti merespons navigasi pengguna dengan mempertanyakan keputusan
pengguna. Ada penggunaan yang positif untuk fitur ini. Misalnya, atribut ini sering digunakan untuk memperingatkan pengguna ketika mereka akan kehilangan data dengan menavigasi.
Meskipun kemampuan halaman untuk menyediakan teks bagi dialog beforeunload
telah
dihapus beberapa waktu lalu, dialog beforeunload
tetap menjadi vektor penyalahgunaan. Secara
khusus, dialog beforeunload
merupakan bagian dari situs scam, dengan
audio putar otomatis dan teks ancaman memberikan konteks saat pesan "apakah Anda yakin ingin meninggalkan halaman ini"
yang diberikan Chromium menjadi mengkhawatirkan.
Kita ingin memasukkan jarum, dan hanya mengizinkan penggunaan dialog
beforeunload
yang baik. Penggunaan dialog yang baik adalah dialog ketika pengguna memiliki status yang mungkin hilang. Jika pengguna tidak pernah berinteraksi dengan halaman, pengguna tidak dapat memiliki
status apa pun yang mungkin hilang, dan oleh karena itu, kita tidak berisiko kehilangan data pengguna dengan
menyembunyikan dialog dalam kasus tersebut.