Di hampir setiap versi Chrome, kami melihat sejumlah besar update dan peningkatan pada produk, performanya, dan juga kemampuan platform web.
Di Chrome 50 (Perkiraan tanggal beta: 10 sampai 17 Maret), ada sejumlah perubahan pada Chrome. Daftar ini dapat berubah sewaktu-waktu.
AppCache tidak digunakan lagi di konteks yang tidak aman
TL;DR: Untuk menghambat pembuatan skrip lintas situs, kami menghentikan penggunaan AppCache pada origin yang tidak aman. Kami memperkirakan bahwa di Chrome 52, fitur ini hanya akan berfungsi pada origin yang menayangkan konten melalui HTTPS.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
AppCache adalah fitur yang memungkinkan akses offline dan persisten ke origin, yang merupakan eskalasi hak istimewa yang efektif untuk serangan cross-site scripting. Sebagai bagian dari upaya yang lebih besar untuk menghapus fitur canggih di origin yang tidak aman.
Chrome menghapus vektor serangan ini dengan hanya mengizinkannya melalui HTTPS. Kami menghentikan dukungan HTTP di Chrome 50 dan akan menghapusnya sepenuhnya di Chrome 52.
Document.defaultCharset dihapus
TL;DR: document.defaultCharset
telah
dihapus untuk meningkatkan kepatuhan spesifikasi.
Intent to Remove | Chromestatus Tracker | CRBug Issue
document.defaultCharset
, yang tidak digunakan lagi di Chrome 49, adalah properti hanya baca
yang menampilkan encoding karakter default sistem pengguna berdasarkan
setelan regional mereka. Nilai ini tidak berguna untuk dipertahankan
karena cara browser menggunakan informasi encoding karakter dalam
Respons HTTP atau dalam tag meta yang disematkan di halaman.
Sebagai gantinya, gunakan document.characterSet
untuk mendapatkan nilai pertama yang ditentukan dalam header HTTP. Jika tidak ada, Anda akan mendapatkan nilai yang ditentukan dalam
atribut charset
elemen <meta>
(misalnya, <meta
charset="utf-8">
). Terakhir, jika tidak ada yang tersedia,
document.characterSet
akan menjadi setelan sistem pengguna.
Anda dapat membaca diskusi selengkapnya tentang alasan untuk tidak menentukan spesifikasi ini dalam masalah github ini
Atribut subresource dihapus dari elemen link
TL;DR: Menghapus dukungan untuk nilai subresource
untuk atribut rel
dari
HTMLLinkElement
.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Intent atribut subresource
di <link> adalah untuk melakukan pramuat resource selama waktu tidak ada aktivitas browser. Setelah mendownload halaman, browser
dapat melakukan pra-download resource seperti halaman lain sehingga saat
diminta oleh pengguna, resource tersebut dapat diambil dengan mudah dari cache browser.
Atribut subresource
mengalami sejumlah masalah. Pertama, fitur ini tidak pernah
berfungsi sebagaimana mestinya. Resource yang dirujuk didownload dengan prioritas rendah. Atribut
ini tidak pernah diterapkan di browser selain Chrome. Implementasi
Chrome memiliki bug yang menyebabkan resource didownload dua kali.
Developer yang ingin meningkatkan pengalaman pengguna melalui pramuat konten
memiliki sejumlah opsi, yang paling dapat disesuaikan adalah membuat pekerja
layanan untuk memanfaatkan pra-cache dan Caches API. Solusi tambahan
mencakup nilai lain untuk atribut rel
termasuk preconnect
, prefetch
, preload
, prerender
. Beberapa opsi
ini bersifat eksperimental dan mungkin tidak didukung secara luas.
Menghapus penggantian versi TLS yang tidak aman
TL;DR: Menghapus mekanisme untuk memaksa server menampilkan data menggunakan versi TLS yang kurang aman atau tidak aman.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Transport layer security (TLS) mendukung mekanisme untuk menegosiasikan versi, sehingga memungkinkan pengenalan versi TLS baru tanpa merusak kompatibilitas. Beberapa server menerapkannya sedemikian rupa sehingga browser diperlukan untuk menggunakan endpoint yang tidak aman sebagai penggantian. Oleh karena itu, penyerang dapat memaksa situs mana pun, bukan hanya situs yang salah dikonfigurasi, untuk melakukan negosiasi TLS versi yang lebih lemah.
Situs yang terpengaruh akan gagal terhubung dengan ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
. Administrator
harus memastikan software server mereka merupakan versi terbaru. Jika masih belum terselesaikan, hubungi vendor software
server untuk melihat apakah perbaikan tersedia.
Menghapus KeyboardEvent.prototype.keyLocation
TL;DR: Hapus alias yang tidak diperlukan untuk atribut
Keyboard.prototype.location
.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Atribut ini hanyalah alias untuk atribut Keyboard.prototype.location
, yang memungkinkan disambiguasi antara tombol yang terletak di beberapa
tempat pada keyboard. Misalnya, kedua atribut ini memungkinkan developer
membedakan antara dua tombol Enter
pada keyboard yang diperluas.
Pengendali error dan keberhasilan diperlukan dalam metode RTCPeerConnection
TL;DR: Metode RTCPeerConnection WebRTC
createOffer()
dan createAnswer()
sekarang memerlukan pengendali error serta pengendali keberhasilan. Sebelumnya, Anda
dapat memanggil metode ini hanya dengan pengendali sukses. Penggunaan tersebut
tidak digunakan lagi.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Di Chrome 49, kami menambahkan peringatan jika Anda memanggil
setLocalDescription()
atau setRemoteDescription()
tanpa memberikan pengendali error. Argumen pengendali error bersifat wajib mulai Chrome 50.
Hal ini merupakan bagian dari penyiapan untuk memperkenalkan promise pada metode ini, seperti yang diwajibkan oleh spesifikasi WebRTC.
Berikut adalah contoh dari demo RTCPeerConnection WebRTC (main.js, baris 126):
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
Perlu diperhatikan bahwa setLocalDescription()
dan setRemoteDescription()
memiliki
pengendali error. Browser lama yang hanya mengharapkan pengendali sukses akan mengabaikan argumen pengendali error jika ada; memanggil kode ini di browser lama tidak akan menyebabkan pengecualian.
Secara umum, untuk aplikasi WebRTC produksi, sebaiknya gunakan
adapter.js
, shim, yang dikelola oleh
project WebRTC, untuk melindungi aplikasi dari perubahan spesifikasi dan perbedaan awalan.
XMLHttpRequestProgressEvent tidak lagi didukung
TL;DR: Antarmuka XMLHttpRequestProgressEvent
akan dihapus, bersama
dengan atribut position
dan totalSize
.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Peristiwa ini dibuat untuk mendukung properti kompatibilitas Gecko position
dan totalSize
. Dukungan untuk ketiganya dihentikan di Mozilla 22 dan
fungsinya telah lama digantikan oleh
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
}
}
Menghapus Ekstensi Media Terenkripsi dengan awalan
TL;DR: Ekstensi media terenkripsi dengan awalan telah dihapus dan diganti dengan penggantian tanpa awalan berbasis spesifikasi.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Di Chrome 42, kami meluncurkan ekstensi media terenkripsi versi berbasis spesifikasi,
tanpa awalan. API ini digunakan untuk menemukan,
memilih, dan berinteraksi dengan sistem Pengelolaan Hak Digital untuk digunakan dengan
HTMLMediaElement
.
Itu hampir setahun yang lalu. Dan karena versi tanpa awalan memiliki lebih banyak kemampuan daripada versi berawalan, saatnya untuk menghapus versi berawalan API.
Menghapus dukungan untuk properti SVGElement.offset
TL;DR: Properti offset untuk SVGElement telah dihentikan dan digantikan oleh properti
yang lebih banyak didukung di HTMLElement
.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Properti offset telah lama didukung oleh HTMLElement
dan
SVGElement
; namun, Gecko dan Edge hanya mendukungnya di HTMLElement
. Untuk
meningkatkan konsistensi antar-browser, properti ini tidak digunakan lagi di Chrome
48 dan kini dihapus.
Meskipun properti yang setara adalah bagian dari HTMLElement
, developer yang mencari
alternatif juga dapat menggunakan
getBoundingClientRect()