HTML Academy · Pelajaran

Pengesanan Ciri berbanding Penghidu Pelayar

Gunakan pengesanan ciri dan bukannya penghidu ejen pengguna

Pelajaran 2 daripada 413 langkah

Pengesanan Ciri berbanding Penghidu Pelayar ialah pelajaran HTML Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran HTML Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.

Dua Pendekatan terhadap Keserasian

Untuk mengetahui sama ada pelayar semasa menyokong sesuatu ciri, anda boleh sama ada mengesan ciri itu secara langsung ("IntersectionObserver" in window) atau meneliti rentetan ejen pengguna (navigator.userAgent.includes("Chrome")). Satu pendekatan boleh dipercayai; satu lagi telah lama menjadi punca pepijat.

Mengapa Penelitian Rentetan Gagal

Rentetan ejen pengguna memberikan maklumat yang mengelirukan. Edge mendakwa dirinya sebagai Chrome (dan Safari serta Firefox). Chrome pada Android menghasilkan UA yang berbeza daripada Chrome pada iOS. Pelayar mematuhi "pembekuan" rentetan UA demi privasi. Sebarang logik yang bergantung pada rentetan UA akan rosak setiap beberapa bulan.

Corak Pengesanan Ciri

Semak API sebenar yang diperlukan oleh kod: if ("IntersectionObserver" in window) { ... }. Jika sifat itu wujud, pelayar menyokongnya; jika tidak, gunakan laluan sandaran. Pemeriksaan ini langsung, pantas dan kalis masa hadapan.

if ("IntersectionObserver" in window) {
  const observer = new IntersectionObserver(handler);
} else {
  loadPolyfill().then(() => { /* use IntersectionObserver */ });
}

Kesan, Kemudian Gunakan

Padankan pengesanan dengan sandaran sebenar. Mengesan ciri yang tiada hanya berguna jika anda mempunyai sesuatu untuk dilakukan apabila ciri itu tiada — muatkan polifil, paparkan alternatif statik atau sembunyikan ciri itu sepenuhnya.

Pertanyaan Ciri CSS

CSS mempunyai pengesanan cirinya sendiri: @supports (display: grid) { ... }. Blok itu hanya digunakan apabila pelayar memahami pasangan sifat/nilai tersebut. Gunakannya untuk menghantar reka letak grid dengan sandaran berasaskan float untuk pelayar lama.

@supports (display: grid) {
  .grid { display: grid; gap: 16px; }
}
@supports not (display: grid) {
  .grid > * { float: left; width: 33%; }
}

Petunjuk Klien Ejen Pengguna

Pelayar moden mendedahkan maklumat berstruktur melalui navigator.userAgentData (Chromium sahaja). Ia mengembalikan pasangan jenama+versi dan bukannya rentetan bebas. Namun, tetap utamakan pengesanan ciri — petunjuk UA hanya berguna apabila keupayaan tidak dapat disimpulkan daripada pemeriksaan sifat.

Apabila Penelitian Rentetan Boleh Diterima

Kes penggunaan sempit yang sah untuk pengesanan UA ialah memilih untuk tidak menggunakan pelayar yang bermasalah: pepijat Safari pada iOS yang diketahui dalam versi X. Walaupun begitu, utamakan pengecualian berasaskan ciri (CSS.supports("aspect-ratio: 1")). Pengesanan UA sepatutnya menjadi pilihan terakhir.

Pustaka Gaya Modernizr

Modernizr menggabungkan banyak pengesanan ciri dan mendedahkannya sebagai kelas pada elemen <html> (html.flexbox, html.no-flexbox). Projek moden jarang memerlukannya — kebanyakan pengesanan hanya memerlukan satu baris — tetapi ia masih berguna untuk pemindahan sistem legasi.

Menguji Sandaran

Setelah pengesanan tersedia, uji kedua-dua laluan. Buka DevTools, gantikan ciri itu dengan nilai tidak ditakrifkan dan sahkan bahawa sandaran berfungsi. Sandaran yang tidak diuji menjadi usang — apabila pengguna memerlukannya, sandaran itu sering gagal dengan cara yang tidak pernah dibayangkan oleh pembangun.

Pengesanan dalam Rangka Kerja

React, Vue dan rangka kerja lain tidak mempunyai API pengesanan khas — gunakan JavaScript biasa dalam kesan atau pemulaan komponen. Aplikasi yang dipaparkan oleh pelayan mesti melakukan pengesanan pada klien kerana "IntersectionObserver" in window tidak ditakrifkan semasa SSR.

Elakkan Penelitian UA Berasaskan Keupayaan

Sesetengah pasukan menyemak UA untuk meneka keupayaan ("Adakah ini iPhone? Maka mungkin mempunyai Sentuhan"). Ini mencampuradukkan dua perkara yang tidak berkaitan. Kesan sentuhan secara langsung melalui "ontouchstart" in window atau, lebih baik lagi, utamakan peristiwa penuding yang mengabstrakkan kaedah masukan.

Semakan Pengetahuan

Mengapakah pengesanan ciri lebih diutamakan berbanding penelitian ejen pengguna untuk mengendalikan keupayaan pelayar?

Ringkasan

Utamakan pengesanan ciri ("API" in window) berbanding penelitian ejen pengguna. CSS mempunyai @supports untuk tujuan yang sama. Sentiasa padankan pengesanan dengan sandaran sebenar dan uji kedua-dua laluan. Penelitian UA hendaklah dikhaskan untuk memilih untuk tidak menggunakan versi pelayar yang diketahui bermasalah, bukan untuk meneka keupayaan.

Percuma untuk bermula

Pelajari HTML dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
40
Pelajaran
159

Soalan Lazim

Adakah pelajaran “Pengesanan Ciri berbanding Penghidu Pelayar” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran HTML Academy, termasuk “Pengesanan Ciri berbanding Penghidu Pelayar”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengesanan Ciri berbanding Penghidu Pelayar”?

Gunakan pengesanan ciri dan bukannya penghidu ejen pengguna Anda berlatih HTML Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan HTML Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran HTML Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Pengesanan Ciri berbanding Penghidu Pelayar” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran HTML Academy ini?

Ya. Setiap pelajaran HTML Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Falsafah PE Mulakan dengan HTML
  2. Pengesanan Ciri berbanding Penghidu Pelayar
  3. Degradasi Beransur-ansur berbanding Peningkatan Progresif
  4. Membina Akordion PE
← Kembali ke HTML Academy