Zum yang disebut di sini tidak merujuk kepada zum saiz penyemak imbas, tetapi merujuk kepada zum peratusan kandungan halaman web penyemak imbas (tekan Ctrl dan kekunci atau - kekunci untuk zum).
Terdapat banyak cara untuk mengesan zum ini menggunakan denyar untuk mengesan sama ada penyemak imbas sedang mengezum. Berikut ialah kaedah javascript untuk mengesan zum pelayar.
Untuk IE6, abaikan sahaja, kerana IE6 hanya boleh mengezum teks.
Mari kita bincangkan tentang antara muka pengesanan standard yang disediakan oleh tetingkap penyemak imbas.devicePixelRatio ialah nisbah piksel fizikal pada peranti kepada piksel bebas peranti Atribut ini boleh digunakan untuk mengesan sama ada halaman web telah diskalakan. Pada pelayar PC biasa, nilai lalai ialah 1 tanpa penskalaan secara lalai. Pada masa ini, Firefox, chrome, dsb. disokong dengan baik.
Okay, kini tiba masanya untuk bercakap tentang cara IE mengendalikan perkara ini. IE menyediakan dua sifat: window.screen.deviceXDPI dan window.screen.logicalXDPI deviceXDPI sepadan dengan piksel fizikal pada peranti dan logicalXDPI sepadan dengan perkadaran piksel bebas pada peranti. Dianggarkan bahawa antara muka pengesanan standard hanyalah penambahbaikan berdasarkan kaedah IE. Nilai lalai kedua-dua sifat ini pada sistem di atas Windows XP ialah 96, kerana lalai sistem ialah 96dpi.
Untuk penyemak imbas yang tidak menyokong kedua-dua perkara di atas, anda juga boleh menggunakan sifat window.outerWidth dan window.innerWidth. outerWidth mengembalikan lebar luar sebenar elemen tetingkap, dan innerWidth mengembalikan lebar dalaman sebenar elemen tetingkap Kedua-dua lebar termasuk lebar bar skrol.
Dengan atribut ini, anda pada asasnya boleh mengendalikan pelayar biasa pada penyemak imbas PC. Kod pelaksanaan adalah seperti berikut:
Jika nilai pulangan bagi fungsi detectZoom ialah 100, ia adalah tahap zum lalai, jika lebih daripada 100, ia dizum masuk, dan jika kurang daripada 100, ia dizum keluar.
function detectZoom (){ var ratio = 0, screen = window.screen, ua = navigator.userAgent.toLowerCase(); if (window.devicePixelRatio !== undefined) { ratio = window.devicePixelRatio; } else if (~ua.indexOf('msie')) { if (screen.deviceXDPI && screen.logicalXDPI) { ratio = screen.deviceXDPI / screen.logicalXDPI; } } else if (window.outerWidth !== undefined && window.innerWidth !== undefined) { ratio = window.outerWidth / window.innerWidth; } if (ratio){ ratio = Math.round(ratio * 100); } return ratio; };
Artikel asal, sila nyatakan semasa mencetak semula: Dicetak semula daripada Pembangunan bahagian hadapan