Rumah >hujung hadapan web >tutorial js >5 Cara untuk Memperbaiki JQuery $ .Browser Function Hilang Tidak Dijumpai
3
Takeaways Key
Fungsi JQuery $ .Browser telah ditutup kerana kelemahannya terhadap spoofing dan salah nyataan. Pemaju digalakkan untuk mengelakkan kod khusus penyemak imbas dan sebaliknya menggunakan pengesanan ciri untuk hasil yang lebih dipercayai.
Kebanyakan pemaju pemikiran pertama apabila mereka mula melihat kesilapan yang muncul, berfikir "Apa yang ada, mengapa $ .Browser telah dikeluarkan?". Baiklah, saya jelaskan sedikit tentang beberapa sebab yang mungkin untuk ini. Kerana $ .Browser menggunakan navigator.useragent untuk menentukan platform, ia terdedah kepada spoofing oleh pengguna atau salah nyataan oleh penyemak imbas itu sendiri. Ia sentiasa terbaik untuk mengelakkan kod khusus penyemak imbas sepenuhnya jika mungkin. $ .Support harta tersedia untuk mengesan sokongan untuk ciri -ciri tertentu dan bukannya bergantung pada $ .browser.
Bendera yang tersedia ialah:
safari (decrecated)
opera
Gunakan $. Support baru untuk menggunakan pengesanan ciri & bug. Sekali lagi JQuery melakukan semua kerja keras dan melakukan ujian pada pelayar dan kedai hasil pada objek jQuery.Support (setiap beban halaman secara lalai). Kami kemudian boleh meminta pertanyaan mudah objek ini untuk menentukan adalah ciri yang tersedia untuk digunakan atau tidak. Contohnya untuk memeriksa sokongan kelegapan hanya lakukan ini:
jQuery<span>.uaMatch = function( ua ) { </span> ua <span>= ua.toLowerCase(); </span> <span>var match = <span>/<span>(chrome)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(webkit)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(opera)(?:.*version|)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(msie) (<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> ua<span>.indexOf("compatible") < 0 && <span>/<span>(mozilla)(?:.*? rv:(<span>[w.]</span>+)|)</span>/</span>.exec( ua ) || </span> <span>[]; </span> <span>return { </span> <span>browser: match[ 1 ] || "", </span> <span>version: match[ 2 ] || "0" </span> <span>}; </span><span>}; </span> <span>// Don't clobber any existing jQuery.browser in case it's different </span><span>if ( !jQuery.browser ) { </span> matched <span>= jQuery.uaMatch( navigator.userAgent ); </span> browser <span>= {}; </span> <span>if ( matched.browser ) { </span> browser<span>[ matched.browser ] = true; </span> browser<span>.version = matched.version; </span> <span>} </span> <span>// Chrome is Webkit, but Webkit is also Safari. </span> <span>if ( browser.chrome ) { </span> browser<span>.webkit = true; </span> <span>} else if ( browser.webkit ) { </span> browser<span>.safari = true; </span> <span>} </span> jQuery<span>.browser = browser; </span><span>} </span> <span>// Warn if the code tries to get jQuery.browser </span><span>migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" ); </span>
Mengesan pelayar dan versi menggunakan coretan kod JavaScript berikut. QueirksMode mempunyai objek pengesanan pelayar/peranti JavaScript yang cukup luas yang boleh membuktikan berguna.
<span>if (jQuery.support.opacity) </span><span>{ </span> <span>//opacity you may do... </span><span>} </span>
Cukup beritahu pengguna bahawa versi jQuery yang mereka gunakan tidak menyokong fungsi $. Mungkin tidak akan mengesyorkan penyelesaian ini kerana ia tidak digunakan untuk kegunaan, tetapi boleh digunakan untuk menyekat plugin tertentu. Saya akan mencadangkan menggunakan versi pemaju plugin berhijrah yang menghidupkan debugging bermaklumat.
<span>/* </span><span> Internet Explorer sniffer code to add class to body tag for IE version. </span><span> Can be removed if your using something like Modernizr. </span><span> */ </span> <span>var ie = (function () </span> <span>{ </span> <span>var undef, </span> v <span>= 3, </span> div <span>= document.createElement('div'), </span> all <span>= div.getElementsByTagName('i'); </span> <span>while ( </span> div<span>.innerHTML = '', </span> all<span>[0]); </span> <span>//append class to body for use with browser support </span> <span>if (v > 4) </span> <span>{ </span> <span>$('body').addClass('ie' + v); </span> <span>} </span> <span>}()); </span>
Sumber: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.iframe-auto-height.plugin.1.9.1.js
seperti biasa, komen, cadangan dan penambahbaikan yang dialu -alukan.
Untuk menggunakan plugin migrasi jQuery, anda perlu memasukkannya ke dalam fail HTML anda selepas memasukkan jQuery. Sebaik sahaja anda telah memasukkan plugin, ia akan memulihkan fungsi pelayar jQuery secara automatik dan ciri -ciri yang tidak lama lagi. Fungsi pelayar jQuery. Salah satu alternatif yang paling popular adalah pengesanan ciri, yang merupakan pendekatan yang lebih dipercayai dan masa depan. Anda boleh menggunakan Perpustakaan Modernizr untuk pengesanan ciri. Alternatif lain ialah menggunakan navigator.useragent property, walaupun ini tidak disyorkan kerana ia dapat dengan mudah dimusnahkan. Pengesanan kerana ia adalah pendekatan yang lebih dipercayai dan masa depan. Pengesanan penyemak imbas bergantung pada rentetan ejen pengguna, yang boleh dengan mudah dimusnahkan atau disalahgunakan. Sebaliknya, pemeriksaan pengesanan ciri jika ciri tertentu tersedia, yang merupakan cara yang lebih tepat untuk menentukan keupayaan penyemak imbas pengguna. Fungsi penyemak imbas?
Atas ialah kandungan terperinci 5 Cara untuk Memperbaiki JQuery $ .Browser Function Hilang Tidak Dijumpai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!