de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 TK123
TK123
Question

Apa cara terbaik untuk mendeteksi retina dukungan pada perangkat yang menggunakan JavaScript?

Sekarang saya menggunakan ini:

function is_retina_device() {
    return window.devicePixelRatio > 1;
}

Tapi itu's kesederhanaan membuatku takut. Ini ada pemeriksaan lebih menyeluruh?

46 2013-10-30T17:22:33+00:00 4
Pemrograman
javascript
jquery
retina-display
Solution / Answer
Adam Merrifield
Adam Merrifield
6 Desember 2013 в 12:35
2013-12-06T00:35:02+00:00
Lebih
Sumber
Sunting
#22669260

Sesuai untuk segala sesuatu yang saya've baca baru-baru ini, browser tampaknya akan bergerak menuju resolusi permintaan media ekspresi. Ini bukan perangkat-pixel-rasio yang sedang digunakan pada saat ini jawaban yang diterima. Alasan mengapa perangkat-pixel-rasio hanya boleh digunakan sebagai fallback adalah karena tidak standar media query.

Menurut w3.org:

Sekali waktu, Webkit memutuskan media query untuk resolusi layar yang dibutuhkan. Tapi daripada menggunakan yang sudah-resolusi standar media query, mereka diciptakan-webkit-perangkat-pixel-rasio.

Lihat Artikel Lengkap

Resolusi Permintaan Media Dokumentasi

Sejak resolusi adalah standar dan oleh karena itu masa depan let's menggunakan yang pertama di deteksi untuk pemeriksaan masa depan. Juga karena saya'm tidak yakin jika anda ingin mendeteksi hanya tinggi dppx perangkat atau hanya retina(Apple hanya) perangkat, I've menambahkan salah satu dari masing-masing. Akhirnya sebagai catatan, Apple deteksi adalah hanya user agent mengendus agar bisa't tergantung on. Catatan: untuk isRetina fungsi I'm menggunakan dppx 2 bukan 1.3 karena semua retina perangkat apple memiliki 2dppx.

Catatan tampak bahwa MS Edge memiliki beberapa masalah dengan non-integer values

function isHighDensity(){
    return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 1.3));
}

function isRetina(){
    return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)').matches)) || (window.devicePixelRatio && window.devicePixelRatio >= 2)) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
}
Adam Merrifield
Adam Merrifield
Jawaban edit 3 Januari 2019 в 4:35
42
0
Juan Castillo
Juan Castillo
30 Oktober 2013 в 6:00
2013-10-30T18:00:13+00:00
Lebih
Sumber
Sunting
#22669259

Jika anda ingin untuk gambar anda dapat menggunakan retinajs atau kode ini adalah respon umum untuk mendeteksi:

function isRetinaDisplay() {
        if (window.matchMedia) {
            var mq = window.matchMedia("only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen  and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)");
            return (mq && mq.matches || (window.devicePixelRatio > 1)); 
        }
    }
Juan Castillo
Juan Castillo
Jawaban edit 31 Juli 2015 в 4:21
32
0
Guido Bouman
Guido Bouman
12 Januari 2016 в 9:28
2016-01-12T09:28:47+00:00
Lebih
Sumber
Sunting
#22669261

Sebenarnya, kode anda're menggunakan dalam pertanyaan anda adalah hanya benar-benar tepat jika anda hanya peduli tentang browser modern. (Lihat: http://caniuse.com/#feat=devicepixelratio)

Semua browser modern memiliki itu dilaksanakan, dan browser yang lebih tua hanya akan melayani anda menurunkan resolusi gambar. Saya don't mengharapkan IE10 - muncul pada retina / high-res perangkat. Juga, menggunakan CSS cek di JavaScript tidak lebih aneh daripada menggunakan native jendela properti?

Heck, devicePixelRatio browser mendukung bahkan lebih baik daripada resolusi spec. (Lihat: http://caniuse.com/#feat=css-media-resolution)

I'd katakan's benar-benar sangat aman untuk digunakan, kita gunakan dalam produksi situs web dengan lebih dari 10 juta pengunjung per bulan. Bekerja seperti yang diharapkan.

Satu-satunya hal yang saya'd perubahan adalah nama fungsi, seperti kebutuhan untuk beban tinggi res images doesn't secara teknis berarti layar retina. Sebenarnya, anda don't bahkan membutuhkan nomor cek, seperti tidak terdefinisi > 1 menghasilkan false.

function is_high_resolution_screen() {
  return window.devicePixelRatio > 1;
}
Guido Bouman
Guido Bouman
Jawaban edit 24 Januari 2016 в 8:47
12
0
Lee Le
Lee Le
28 September 2016 в 6:42
2016-09-28T06:42:49+00:00
Lebih
Sumber
Sunting
#22669262

devicePixelRatio tidak dapat diandalkan sama sekali. ketika anda zoom in sampai 200%, jendela.devicePixelRatio akan kembali anda 2, tapi anda tidak berada pada retina display.

0
0
Related communities 2
JavaScript Indonesia
JavaScript Indonesia
14 533 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
jQuery Indonesia
jQuery Indonesia
343 pengguna
Learning jQuery & Solve Problem
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 2 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi