Di hampir setiap versi Chrome, kami melihat sejumlah besar update dan peningkatan pada produk, performanya, dan juga kemampuan Platform Web. Artikel ini menjelaskan penghentian penggunaan dan penghapusan di Chrome 54, yang dalam versi beta mulai 15 September. Daftar ini dapat berubah sewaktu-waktu.
Menonaktifkan navigasi di pengendali penghapusan muatan
TL;DR: Semua navigasi lintas origin tidak akan diizinkan di pengendali peristiwa window.onunload agar Chrome sejalan dengan spesifikasi HTML serta Firefox dan Safari.
Niat untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Chrome versi sebelumnya mengizinkan navigasi lintas origin terganggu di dalam window.onunload. dengan menyetel window.location.href = '#fragment'. Menurut spesifikasi HTML, hanya navigasi dalam halaman yang diizinkan di pengendali pelepasan, dan di Chrome versi sebelumnya, metode navigasi lainnya diblokir sebagaimana diwajibkan oleh spesifikasi. Mulai Chrome 54, navigasi tersebut tidak akan diizinkan agar sesuai dengan spesifikasi serta Firefox dan Safari.
HTTP/0.9 tidak digunakan lagi
Singkatnya: HTTP/0.9 sudah tidak digunakan lagi. Developer harus beralih ke versi yang lebih baru, sebaiknya HTTP/2.
Niat untuk Menghapus | Pelacak Chromestatus | Bug Chromium
HTTP/0.9 adalah pendahulu HTTP/1.x. Ponsel ini tidak memiliki banyak fitur yang ada di penerusnya. Masalah khusus untuk web modern adalah kurangnya header respons. Tanpa header tersebut, tidak ada cara untuk memverifikasi bahwa respons HTTP/0.9 benar-benar merupakan respons HTTP/0.9. Hal ini dapat menyebabkan beberapa masalah. Contohnya mencakup, antara lain:
- Klien yang memperlakukan respons error tertentu sebagai respons HTTP/0.9 yang valid.
- Server yang gagal menutup soket permintaan sehingga menyebabkan klien memperlakukan respons sebagai GET yang tertunda yang tetap aktif selamanya atau hingga pengguna keluar dari halaman yang membuat permintaan.
- Server yang tidak dapat menunjukkan kepada browser bahwa permintaan gagal, yang dapat menyebabkan masalah pada heuristik penyimpanan dalam cache.
Satu-satunya cara yang paling efektif untuk memperbaiki masalah pada 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 terhadap spesifikasi dan akan dihapus sepenuhnya di Chrome 54.
Niat untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Sejak lama, developer dapat membuat peristiwa sentuh sintetis di Chrome menggunakan initTouchEvent API. Peristiwa ini sering digunakan untuk menyimulasikan Peristiwa Sentuhan
baik untuk menguji atau mengotomatiskan beberapa UI di situs Anda. Sejak Chrome 49, API yang tidak digunakan lagi ini telah menampilkan peringatan berikut .
TouchEvent.initTouchEvent tidak digunakan lagi dan akan dihapus di M53,
sekitar September 2016. Sebagai gantinya, gunakan konstruktor TouchEvent. Lihat
https://www.chromestatus.com/features/5730982598541312 untuk mengetahui detail selengkapnya.
Selain tidak ada dalam spesifikasi Peristiwa Sentuh, ada sejumlah alasan mengapa
perubahan ini bagus.
Implementasi initTouchEvent di Chrome sama sekali tidak kompatibel dengan
API initTouchEvent Safari dan berbeda dengan initTouchEvent di Firefox untuk Android. Terakhir, konstruktor TouchEvent jauh lebih mudah digunakan.
Karena alasan tersebut, kami memutuskan untuk mengikuti spesifikasi daripada mempertahankan API yang tidak sesuai spesifikasi dan tidak kompatibel dengan satu-satunya implementasi lainnya.
Developer yang memerlukan alternatif harus menggunakan konstruktor TouchEvent.
Karena penerapan initTouchEvent API di iOS dan Android/Chrome sangat berbeda, situs sering kali memiliki
kode yang mirip dengan
(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);
Hal ini buruk karena mencari "Android" di Agen Pengguna dan Chrome di Android akan cocok dan mengalami penghentian penggunaan ini. Namun, API ini belum dapat dihapus karena akan ada browser lain berbasis WebKit dan Blink yang lebih lama di Android untuk sementara waktu yang masih memerlukan dukungan API lama.
Untuk menangani TouchEvent dengan benar di web, Anda harus mengubah kode untuk mendukung Firefox, IE Edge, dan Chrome dengan memeriksa keberadaan TouchEvent pada objek window dan jika memiliki "panjang" positif (menunjukkan bahwa itu adalah 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
Singkatnya: Properti keyboardEvent.keyIdentifier yang kurang didukung akan dihapus dan digantikan dengan properti KeyboardEvent.key berbasis standar.
Niat untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Atribut keyboardEvent.keyIdentifier sempat menjadi bagian dari spesifikasi W3C pada tahun 2009 dan 2010. Namun, fitur ini hanya pernah diterapkan 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 buat musim semi lalu). Yang pertama memiliki basis penerapan terluas, karena didukung di semua browser desktop utama kecuali Safari. Yang terakhir saat ini didukung di Chrome, Firefox, dan Opera. Penghapusan fitur ini dimaksudkan untuk mendorong penggunaan properti KeyboardEvent.key. Belum ada kabar dari Apple mengenai apakah akan mendukung hal ini atau tidak; namun properti KeyboardEvent.keyCode dan KeyboardEvent.charCode yang juga tidak digunakan lagi (tetapi belum dihapus dari Chrome) masih tersedia di Safari.
Menghapus peristiwa dan atribut MediaStream ended serta atribut onended
TL;DR: Peristiwa dan atribut ended serta pengendali peristiwa onended dihapus karena telah dihapus dari spesifikasi Media Capture and Streams.
Niat untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Peristiwa ended maupun pengendali peristiwa onended tidak menjadi bagian dari spesifikasi WebRTC selama sekitar tiga tahun. Developer yang ingin memantau peristiwa harus menggunakan MediaStreamTracks, bukan MediaStreams.
Menghentikan penggunaan SVGSVGElement.viewPort
Penerapannya tidak berfungsi di Chrome sejak tahun 2012. Atribut tidak ada sama sekali di browser lain dan telah dihapus dari spesifikasi. Oleh karena itu, properti ini tidak digunakan lagi. Penghapusan ini diperkirakan akan dilakukan di Chrome 55.
Niat 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 ini diperkirakan akan dilakukan di Chrome 56.
Niat untuk Menghapus | Pelacak Chromestatus | Bug Chromium
Menghapus SVGZoomEvent
SVGZoomEvent bukan bagian dari spesifikasi SVG2.0 dan tidak berfungsi di Chromium. Meskipun masih dapat dideteksi fitur, hal ini dapat menyebabkan kebingungan bagi developer. Foto tersebut akan dihapus.