7 bug penyemak imbas kronik yang melanda laman web

Pelayar web sangat mengagumkan. Sekiranya bukan untuk penyemak imbas, kami tidak dapat menghubungkan hampir dengan pengguna dan pelanggan dengan menuangkan data dan dokumen kami ke desktop, tablet, dan telefon mereka. Sayangnya, semua kandungan hebat yang disampaikan oleh penyemak imbas web membuat kita menjadi lebih kecewa apabila renderingnya tidak begitu elegan atau bebas bug seperti yang kita mahukan.

Ketika hendak mengembangkan laman web, kami sangat bergantung pada penyemak imbas kerana kami berhutang dengan mereka. Sebarang kesalahan pada platform mana pun, terutamanya apabila ia merosakkan mesin pengguna kami. Dan dengan reka bentuk seperti premium untuk menonjol atau sesuai, garis lemak atau sentuhan warna yang salah digunakan akan merosakkan pengalaman estetik yang telah kita usahakan untuk dibuat. Kesalahan terkecil sekalipun, seperti menambahkan piksel tambahan pada lebar garis atau tidak sejajar meja sedikit demi sedikit, dapat mengakibatkan pengalaman pengguna yang mengecewakan, belum lagi kos penemuan, pemeriksaan dan pengerjaannya.

Sudah tentu, ia lebih teruk. Perbezaan besar antara penyemak imbas telah banyak dihapus oleh kesetiaan terhadap standard web W3C. Dan perbezaan yang masih ada dapat diabaikan secara umum, berkat percambahan perpustakaan seperti jQuery, yang bukan hanya menjadikan peretasan JavaScript lebih mudah tetapi juga membuat kertas mengenai cara penyemak imbas tidak sama.

Perpustakaan ini mempunyai kebiasaan membekukan bug penyemak imbas di tempatnya. Sekiranya syarikat penyemak imbas memperbaiki beberapa bug terburuk mereka, "pembaikan" baru dapat mengganggu tampalan lama dan penyelesaian. Tiba-tiba "pembetulan" menjadi masalah yang mengganggu kestabilan lama yang kita kecapi di sekitar pepijat. Pengaturcara tidak boleh menang.

Kestabilan yang dibawa oleh perpustakaan seperti jQuery juga mendorong pembangun penyemak imbas untuk mempercepat dan mengautomasikan proses pengemaskinian penyemak imbas mereka. Mozilla komited untuk mengeluarkan versi baru Firefox setiap beberapa bulan. Pada masa lalu, setiap versi akan menjadi sasaran yang stabil untuk pembangun web, dan kami dapat meletakkan sedikit GIF di laman web kami yang menyatakan bahawa mereka berfungsi dengan baik, katakanlah, IE5. Sekarang odometer berubah dengan begitu cepat sehingga versi baru Firefox akan dikeluarkan pada masa yang diperlukan HTML untuk melakukan perjalanan dari pelayan ke klien.

Sementara itu, kami meminta penyemak imbas melakukan lebih banyak lagi. Laman web akhbar tempatan saya membuat mesin saya berlutut - memperluas iklan popover, potongan video yang dimainkan secara automatik, kod untuk menyesuaikan iklan dengan sejarah penyemakan imbas saya baru-baru ini. Sekiranya anak perempuan saya melihat laman web anak patung, JavaScript dengan panik berusaha mencari iklan boneka untuk ditunjukkan kepada saya. Semua sihir ini mengumpulkan CPU.

Semua ini bermaksud bahawa bug penyemak imbas hari ini lebih jarang tetapi lebih sukar untuk dijabarkan. Berikut adalah gambaran genre penyemak imbas penyemak imbas terkini - atau dalam banyak kes, hanya mengganggu - pereka web dan pembangun.

Susun atur

Bug penyemak imbas yang paling ketara adalah gangguan susun atur. Pangkalan data Bug Mozilla Bugzilla mempunyai 10 bahagian untuk masalah susun atur, dan itu tidak termasuk masalah susun atur yang dikategorikan sebagai berkaitan dengan DOM, CSS, atau Canvas. Tugas penyemak imbas yang paling penting adalah menyusun teks dan gambar, dan membuatnya dengan betul seringkali sukar.

Banyak bug susun atur kelihatan kecil hingga hampir esoteris. Bug bug 1303580, misalnya, memanggil Firefox untuk menggunakan font versi miring ketika tag CSS memanggil serong. Mungkin hanya penagih fon yang menyedari perkara itu. Sementara itu Bug Bug 1296269 melaporkan bahawa bahagian-bahagian huruf dalam Komik Sans dipotong, sekurang-kurangnya pada Windows. Pereka fon membuat perbezaan, dan itu penting bagi mereka. Apabila mereka tidak dapat melihat dan merasakan yang tepat di semua penyemak imbas, pereka laman web mungkin menjadi sedikit kecewa.

Terdapat ratusan, ribuan, bahkan mungkin berjuta-juta pepijat ini. Pada, kami menghadapi masalah dengan gambar yang hilang di editor CMS dan span tag yang muncul hanya di DOM.

Kebocoran memori

Selalunya sukar untuk menyedari kebocoran memori. Secara definisi, mereka tidak mengubah sifat yang kelihatan. Laman web dibuat dengan betul, tetapi penyemak imbas tidak membersihkan selepas fakta. Terlalu banyak perjalanan ke laman web yang mencetuskan kebocoran dan mesin anda melambat untuk merangkak kerana semua RAM terkunci dengan memegang struktur data yang tidak akan dapat digunakan semula. Oleh itu, OS dengan panik menukar blok memori maya ke cakera dan anda menghabiskan masa menunggu. Pilihan terbaik adalah menghidupkan semula mesin anda.

Perincian pepijat kebocoran memori boleh menjadi tidak menyenangkan, dan kami bernasib baik kerana sebilangan pengaturcara meluangkan masa untuk memperbaikinya. Pertimbangkan masalah 640578 dari timbunan penyemak imbas Chronium. Mengubah bahagian DOM dengan bermain-main dengan innerHTMLharta bocor memori. Contoh kod dengan panggilan gelung berulang yang ketat requestAnimationFrameakan mendua masalah. Terdapat puluhan masalah seperti ini.

Sudah tentu, ini bukan kesalahan penyemak imbas. Chromium issue 640922, misalnya, juga memperincikan kebocoran memori dan memberikan contoh. Analisis lebih lanjut, bagaimanapun, menunjukkan bahawa kod contoh adalah membuat Date()objek di sepanjang jalan untuk menguji waktu, dan mereka mungkin merupakan sumber masalah.

Kilat

Ia cukup rasmi. Semua orang telah melupakan karya seni dan video web anti-alias yang hebat yang dibawa oleh Adobe Flash ke web. Kami sebaliknya menyalahkannya atas semua kemalangan yang mungkin atau mungkin bukan salahnya. Sekarang ia secara rasmi dihentikan, tetapi tidak akan cepat. Bahkan beberapa syarikat yang berpandangan maju yang mendorong standard web masih mempunyai kod Flash di halaman mereka. Saya terkejut berapa kerap saya menemui kod Flash di luar laman web MySpace dan GeoCities.

Sentuhan dan klik

Tidak mudah untuk menyulap pelbagai jenis input, terutama sekali tablet dan telefon menghasilkan sentuhan yang mungkin atau tidak bertindak seperti klik tetikus. Tidak mengejutkan apabila mendapati terdapat banyak pepijat di kawasan ini. Rangka kerja Bootstrap JavaScript menyimpan senarai bug yang paling menjengkelkan, dan beberapa kejatuhan terburuk dalam kategori ini.

Safari, misalnya, kadang-kadang terlepas ketukan jari pada teks dalam tag (151933). Kadang kala menu tidak berfungsi pada iPad kerana penyemak imbas telah mengalihkan segi empat tepat untuk mencari input (150079). Kadang-kadang klik memicu goyangan aneh dalam item - yang mungkin kelihatan seperti itu dilakukan dengan sengaja oleh seorang pereka yang garang (158276). Semua ini menimbulkan kekeliruan apabila teks atau gambar di layar tidak bertindak balas seperti yang kita harapkan.

Video

Rancangannya adalah untuk mempermudah penyampaian audio dan video dengan memindahkan tanggungjawab di dalam penyemak imbas dan keluar dari dunia pemalam. Ini telah menghilangkan masalah antara muka, tetapi tidak menghilangkan semua masalah. Senarai pepijat video panjang, dan banyak daripadanya terlalu kelihatan. Entri Bugzilla 754753 menggambarkan "kebanyakan percikan merah dan hijau yang mengandungi pelbagai gambar hantu," dan entri Bugzilla 1302991 "'gagap' kerana kekurangan kata yang lebih baik."

Beberapa masalah yang paling rumit muncul ketika penyemak imbas mengintegrasikan pelbagai mekanisme penyulitan yang dirancang untuk mencegah pembajakan. Bug 1304899 menunjukkan bahawa Firefox tidak memuat turun mekanisme penyulitan (EME) yang betul dari Adobe secara automatik. Adakah salah Firefox? Adobe? Atau mungkin proksi pelik?

Bug video akan terus mendominasi. Mengintegrasikan video web dengan bentuk kandungan lain dengan menambahkan tag video ke HTML5 telah membuka banyak kemungkinan baru untuk pereka, tetapi setiap kemungkinan baru bermaksud peluang baru untuk bug dan ketidakkonsistenan muncul.

Melayang

Keupayaan untuk laman web mengikuti tetikus bergerak melintasi halaman membantu pereka web memberi pengguna petunjuk tentang ciri apa yang mungkin tersembunyi di sebalik gambar atau kata. Sayangnya, acara melayang tidak selalu berjalan dengan pantas secepat mungkin.

Penyemak imbas Microsoft Edge yang baru, misalnya, tidak menyembunyikan kursor ketika tetikus melayang di atas beberapa item input (817822). Kadang kala melayang tidak berakhir (5381673). Kadang kala peristiwa hover dihubungkan dengan item yang salah (7787318). Semua ini menimbulkan kekeliruan dan tidak menggalakkan penggunaan kesan yang cukup kemas.

Perisian hasad

Walaupun menggoda untuk meletakkan semua kesalahan bug penyemak imbas pada pembangun penyemak imbas, itu sering tidak adil. Sebilangan besar masalah disebabkan oleh perisian hasad yang dirancang untuk dijadikan peluasan atau pemalam yang berguna. Dalam banyak kes, perisian hasad melakukan sesuatu yang benar-benar berguna semasa mencuri klik atau perdagangan secara rahsia di latar belakang.

Masalahnya ialah antara muka sambungan cukup hebat. Sambungan boleh memasukkan teg dan kod sewenang-wenangnya ke semua laman web. Di tangan kanan, ini sangat keren, tetapi mudah untuk melihat bagaimana kod baru dari pelanjutan dapat memasukkan kod dari laman web. Apa? Anda tidak mahu mentakrifkan semula tingkah laku $fungsi tersebut?

Ini bukan bug sebagai masalah falsafah yang mendalam dengan ciri yang sangat keren. Tetapi dengan kekuatan besar datang tanggungjawab yang besar - mungkin lebih besar daripada yang dapat dikendalikan oleh pengaturcara peluasan. Cara terbaik untuk melihat masalah ini adalah dengan menyedari bahawa ini adalah satu-satunya kawasan di mana kita, pengguna, mempunyai kawalan. Kami boleh mematikan pelanjutan dan menghadkannya hanya pada beberapa laman web yang tidak mempunyai masalah. API agak terlalu kuat untuk penggunaan sehari-hari - sangat kuat sehingga menggoda untuk memanggil API pelanjutan pepijat terbesar dari semua. Tetapi itu akan menafikan semua yang dilakukannya untuk kita.

Artikel berkaitan

  • Beyond jQuery: Panduan pakar untuk rangka kerja JavaScript
  • Ulasan: 7 IDE JavaScript diuji
  • Pemecahan HTML5: Bagaimana Chrome, Safari, Firefox, IE, dan Opera mengukur
  • Ulasan: 13 rangka web Python primo
  • Kekuatan pengaturcaraan malas
  • Muat turun: Panduan pengembangan kerjaya pemaju
  • 7 idea pengaturcaraan buruk yang berfungsi
  • 9 tabiat pengaturcaraan buruk yang kita gemari secara diam-diam
  • 21 trend pengaturcaraan panas - dan 21 akan menjadi sejuk