Di hampir setiap versi Chrome, kami melihat sejumlah besar pembaruan dan peningkatan pada produk, kinerja, dan juga kemampuan Platform Web. Artikel ini menjelaskan penghentian penggunaan dan penghapusan di Chrome 54, yang masih dalam versi beta mulai 15 September. Daftar ini dapat berubah sewaktu-waktu.
Menonaktifkan navigasi di pengendali penghapusan muatan
TL;DR: Semua navigasi lintas asal tidak akan diizinkan di pengendali peristiwa window.onunload
untuk menghadirkan Chrome secara inline dengan spesifikasi HTML serta Firefox dan Safari.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Chrome versi sebelumnya memungkinkan navigasi lintas asal terganggu di dalam window.onunload
. dengan menyetel window.location.href = '#fragment'
. Menurut spesifikasi HTML, hanya navigasi dalam halaman yang diizinkan di pengendali penghapusan muatan, dan di Chrome versi sebelumnya, metode navigasi lain diblokir sebagaimana diwajibkan oleh spesifikasi. Mulai Chrome 54, navigasi semacam itu tidak diizinkan untuk menyesuaikan dengan spesifikasi serta Firefox dan Safari.
HTTP/0.9 tidak digunakan lagi
TL;DR: HTTP/0.9 tidak digunakan lagi. Developer harus beralih ke versi yang lebih baru, terutama HTTP/2.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
HTTP/0.9 adalah pendahulu HTTP/1.x. API ini tidak memiliki banyak fitur penggantinya. Permasalahan khusus untuk web modern adalah kurangnya header respons. Tanpa tanda kurung, tidak ada cara untuk memverifikasi bahwa respons HTTP/0.9 benar-benar respons HTTP/0.9. Hal ini dapat menyebabkan beberapa masalah. Contohnya mencakup, di antara masalah lainnya:
- Klien yang memperlakukan respons error tertentu sebagai respons HTTP/0.9 yang valid.
- Server yang gagal menutup soket permintaan yang menyebabkan klien memperlakukan respons sebagai GET yang macet yang akan tetap aktif selamanya atau hingga pengguna membuka dari halaman yang membuat permintaan.
- Server yang tidak dapat menunjukkan ke browser bahwa permintaan gagal, yang dapat menyebabkan masalah dengan heuristik cache.
Satu-satunya cara yang sangat mudah untuk memperbaiki masalah dengan HTTP/0.9 adalah dengan menghapus dukungan sepenuhnya. Itulah sebabnya dukungan untuk HTTP/0.9 dihapus di Chrome 54.
Penggunaan initTouchEvent
dihapus
TL;DR:
initTouchEvent
tidak digunakan lagi dan digantikan dengan
TouchEvent
constructor
untuk meningkatkan
kepatuhan spesifikasi dan akan dihapus sepenuhnya di Chrome 54.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Developer telah lama dapat membuat peristiwa sentuh sintetis di Chrome
menggunakan initTouchEvent
API. Objek ini sering digunakan untuk menyimulasikan Peristiwa Sentuh
untuk pengujian atau otomatisasi beberapa UI di situs Anda. Sejak Chrome 49, API yang sudah tidak digunakan lagi ini menampilkan peringatan berikut .
Selain tidak disertakan dalam spesifikasi Peristiwa Sentuh, ada sejumlah alasan mengapa perubahan ini bagus.
Implementasi Chrome initTouchEvent
sama sekali tidak kompatibel dengan
initTouchEvent
API Safari dan berbeda dengan Firefox di Android. Dan
terakhir, konstruktor TouchEvent
jauh lebih mudah digunakan.
Karena alasan ini, kami memutuskan untuk mengikuti spesifikasi tersebut daripada mempertahankan API
yang tidak ditentukan atau tidak kompatibel dengan satu-satunya implementasi lain.
Developer yang memerlukan alternatif harus menggunakan konstruktor TouchEvent
.
Karena implementasi iOS dan Android/Chrome dari initTouchEvent
API sangat berbeda, situs sering kali memiliki kode di sepanjang baris (sering melupakan Firefox)
var event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches, changedTouches, 0, 0);
}
document.body.dispatchEvent(touchEvent);
Ini buruk karena mencari "Android" di Agen Pengguna dan Chrome di Android akan cocok dan mencapai penghentian ini. API ini belum dapat dihapus karena akan ada browser berbasis WebKit dan Blink lama lainnya di Android untuk sementara waktu, dan Anda masih harus mendukung API lama.
Untuk menangani TouchEvent
di web dengan benar, Anda harus mengubah kode untuk
mendukung Firefox, IE Edge, dan Chrome dengan memeriksa keberadaan TouchEvent
pada objek window
dan apakah memiliki "panjang" positif (menunjukkan bahwa
konstruktor yang mengambil argumen), Anda harus menggunakannya.
if('TouchEvent' in window && TouchEvent.length > 0) {
var touch = new Touch({
identifier: 42,
target: document.body,
clientX: 200,
clientY: 200,
screenX: 300,
screenY: 300,
pageX: 200,
pageY: 200,
radiusX: 5,
radiusY: 5
});
event = new TouchEvent("touchstart", {
cancelable: true,
bubbles: true,
touches: [touch],
targetTouches: [touch],
changedTouches: [touch]
});
}
else {
event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches,
changedTouches, 0, 0);
}
}
document.body.dispatchEvent(touchEvent);
Atribut KeyboardEvent.keyIdentifier dihapus
TL;DR: Properti keyboardEvent.keyIdentifier
yang sedikit didukung akan dihapus dan diganti dengan properti KeyboardEvent.key
berbasis standar.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Atribut keyboardEvent.keyIdentifier
sempat menjadi bagian dari spesifikasi W3C pada tahun 2009 dan 2010. Namun, hal ini hanya diimplementasikan di WebKit.
Developer yang perlu mengganti atribut ini dapat menggunakan properti KeyboardEvent.key
berbasis standar atau properti KeyboardEvent.code
(seperti yang dijelaskan dalam artikel yang kami lakukan musim semi lalu). Mode pertama memiliki basis implementasi terluas, yang didukung di semua browser desktop utama kecuali Safari. Versi terbaru saat ini didukung di Chrome, Firefox, dan Opera. Menghapus fitur ini bertujuan untuk mendorong penggunaan properti KeyboardEvent.key
. Tidak ada informasi dari Apple apakah akan mendukung fitur ini atau tidak. Namun, properti KeyboardEvent.keyCode
dan KeyboardEvent.charCode
yang tidak digunakan lagi (tetapi belum dihapus dari Chrome) masih tersedia di Safari.
Menghapus atribut dan peristiwa berakhir MediaStream serta atribut yang diaktifkan
TL;DR: Peristiwa dan atribut ended
serta pengendali peristiwa onended
dihapus karena telah dihapus dari spesifikasi Media Capture dan Stream.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Baik peristiwa ended
maupun pengendali peristiwa onended
tidak menjadi bagian dari spesifikasi WebRTC selama sekitar tiga tahun. Developer yang ingin menonton peristiwa harus menggunakan MediaStreamTracks
, bukan MediaStreams
.
Menghentikan penggunaan SVGSVGElement.viewPort
Implementasi ini tidak berfungsi di Chrome sejak 2012. Atribut tidak ada sama sekali di browser lain dan telah dihapus dari spesifikasi. Oleh karena itu, properti ini tidak digunakan lagi. Penghapusan diperkirakan akan terjadi di Chrome 55.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Menghentikan penggunaan SVGViewElement.viewTarget
Atribut SVGViewElement.viewTarget
bukan bagian dari spesifikasi SVG2.0 dan penggunaannya kecil atau tidak ada. Atribut ini tidak digunakan lagi di Chrome 54. Penghapusan diperkirakan akan terjadi di Chrome 56.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Menghapus SVGZoomEvent
SVGZoomEvent
bukan bagian dari spesifikasi SVG2.0 dan tidak berfungsi di Chromium. Meskipun demikian, fitur ini masih dapat dideteksi, yang menyebabkan potensi kebingungan oleh developer. Properti tersebut akan dihapus.
Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium