UnEught TypeError: Tidak dapat membaca properti 'msie' alat jQuery tidak terdefinisi


190

Saya mendapatkan kesalahan berikut di konsol dev Chrome:

Uncaught TypeError: Cannot read property 'msie' of undefined

Pemahaman saya adalah bahwa itu karena .browsersekarang sudah usang di jQuery namun saya menggunakan versi terbaru dari alat-alat jQuery dan masih memberikan kesalahan, saya memeriksa jsfile dan ada di sana.

Bagaimana saya bisa mengatasi ini sehingga tidak memberikan kesalahan?


1
kesalahan ini tidak cukup. Dari elemen apa Anda mencoba membaca ini?
Siddharth Gupta

Saya belum pernah menggunakan .browserkode saya sama sekali. Tampaknya mendeteksi itu di file alat jQuery.
Colin747

6
The browserobjek tidak hanya usang di 1,9, itu hilang . Jika Alat jQuery masih menggunakannya, maka Alat jQuery rusak.
Runcing

1
@Alexander yang sepertinya menyingkirkan kesalahan. Anda dapat memberikan jawaban jika mau.
Colin747

3
Alat jQuery terbaru hanya diuji dengan jQuery 1.7. jQuery 1.9 tidak kompatibel dengan versi terbaru dari jQuery Tools; sesederhana itu. Buang jQuery Tools atau turunkan jQuery ke versi apa pun di bawah 1.9 yang berfungsi. Kalau tidak, jangan berharap ada yang memperbarui jQuery Tools, itu sudah tanpa pengembang selama beberapa tahun terakhir.
Sparky

Jawaban:


189

The $.browserMetode telah dihapus karena jQuery 1.9.

jQuery.browser() removed

The jQuery.browser()Metode telah usang sejak jQuery 1.3 dan dihapus di 1.9. Jika diperlukan, ini tersedia sebagai bagian dari plugin jQuery Migrate. Kami merekomendasikan penggunaan deteksi fitur dengan perpustakaan seperti Modernizr.

- Panduan Upgrade jQuery Core 1.9 .

Seperti yang dinyatakan dalam Panduan Upgrade, Anda dapat mencoba menggunakan plugin jQuery Migrate untuk memulihkan fungsionalitas ini dan membiarkan jQuery Tools berfungsi.


242

Anda dapat memeriksa solusi ini dengan AJ. Cukup mudah, cukup salin dan tempel baris kode berikut.

jQuery.browser = {};
(function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
})();

Referensi :


4
Ini berfungsi Sempurna! Tapi saya menganggap ini harus digunakan sebagai tambalan, bukan solusi kan?
Jobokai

Terima kasih, menggunakan plugin jquery yang menggunakan ini dan ini adalah solusi jangka pendek yang mudah sampai perbaikan nyata berjalan.
Joe Meyer

Terima kasih. Ini memperbaiki Alat Kueri v1.2.7, karena kami meningkatkan JQuery ke yang terbaru.
bsentosa

1
WOW, Jika saya bisa memberi Anda 10 plus, saya akan melakukannya sekarang.
Iman Hejazi

9
Jawaban ini tidak lagi benar, karena IE11 tidak memiliki token MSIE dalam userAgentstring.
Dave Methvin

47

Gunakan tag skrip berikut di file jsp / js Anda:

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

ini pasti akan berhasil.


pastikan Anda memiliki koneksi internet yang berfungsi. Jika Anda menggunakan offline maka unduh file js di akhir Anda, dan kemudian rujuk file itu.
Manisha Srivastava

Yah saya bisa melihat bahwa itu di-host secara online ... lagian terima kasih saya menyelesaikannya dengan jquery.noConflict () karena saya memiliki dua versi untuk jquery yang digunakan pada halaman yang sama.
Prerit Mohan

@ User5590: kapan saja :)
Manisha Srivastava

Seharusnya tidak menggunakan jquery yang tidak diperkecil dalam produksi: periksa cdnjs.com misalnya. Dan gunakan HTTPS sebagai gantinya.
Takman

27

Saya menggunakan kode di bawah ini setelah file js termasuk dan berfungsi sekarang.

<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery.browser = {};
    (function () {
        jQuery.browser.msie = false;
        jQuery.browser.version = 0;
        if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
            jQuery.browser.msie = true;
            jQuery.browser.version = RegExp.$1;
        }
    })();
</script>

Tautan tautan ini memberi saya kesalahan, tetapi kode kecil yang Anda tulis ini banyak membantu saya, terima kasih.
Saman

7

Ini adalah bug Alat jQuery di GitHub . Anda dapat mencoba salah satu tambalan.

sunting - tidak terlihat bagi saya seolah Alat jQuery mendapatkan banyak dukungan. Saya pribadi tidak akan memulai proyek baru dengan ketergantungan pada perpustakaan itu kecuali saya siap mengambil alih dukungan sendiri.


1
+1, jQuery Tools telah berantakan total selama beberapa tahun terakhir. Itu bukan "mendapatkan banyak dukungan" sangat akurat dan meremehkan. Saya pikir hanya ada satu pembaruan kecil sejak jQuery 1.3 dan tidak ada pengembang selama beberapa tahun terakhir juga.
Sparky

Setuju, apakah ada yang punya rekomendasi untuk perpustakaan pengganti? Sesuatu dengan penggeser, overlay, dan rentang input slider? Saya menghindari jQuery mobile karena sudah menggunakan pra-gaya. Saya telah menata itu sebelumnya dan itu adalah mimpi buruk.
inorganik

5
Saya telah pindah ke hanya menemukan perpustakaan minimal yang ditulis dengan baik untuk setiap fungsi yang saya inginkan. yaitu: range input slider: loopj.com/jquery-simple-slider , scroller / slider: bxslider.com . Saya menemukan dukungan yang jauh lebih baik dan secara keseluruhan jejak kaki yang lebih kecil menemukan perpustakaan individual seperti ini
Juli

4

Saya hanya menambahkan

jQuery.browser = {
    msie: false,
    version: 0
};

setelah skrip jquery, karena saya tidak peduli tentang IE lagi.


3

Ganti JS Anda dengan

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

Tautan sumber


Saat ini untuk jquery 1.7+, jquery-ui terbaru adalah:<link rel="stylesheet" href="https://stackoverflow.com//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
Pembuat jam

0

Karena saya tidak berencana untuk mendukung versi MS IE lama sama sekali, saya hanya mengganti semua referensi browser.msiedengan false. Bukan solusi yang bagus, saya tahu, tapi itu berhasil untuk saya.

(Sebenarnya, mereka muncul sebagai !browser.msie, yang bisa dihilangkan dari kondisi.)


0

Gunakan seperti pukulan

$(function (a) {

. . . . .kemudian dalam fungsi Anda, Anda dapat menggunakan properti msie seperti

if (a.browser.msie) 
{
}
else 
{
   $(settings.current).after(Uploadelement);
}

semoga berhasil


0

Gunakan seperti pukulan

saya menggunakan perintah ini dan menyelesaikannya

"UnEught TypeError: Tidak dapat membaca properti 'msie' dari undefined" Kesalahan

if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
    return;
}

0

Saya mendapatkan kesalahan ini saat menggunakan JQuery 1.10 dan JQuery UI 1.8. Saya dapat mengatasi kesalahan ini dengan memperbarui ke JQuery UI 1.11.4 terbaru.

Langkah-langkah untuk memperbarui JQuery UI dari Visual Studio:

  • Arahkan ke Proyek atau Solusi
  • Klik kanan: "Kelola Paket NuGet"
  • Di sebelah kiri, klik tab "Paket Terpasang"
  • Cari "JQuery UI (Combined library)" dan klik Perbarui
  • Jika ditemukan, Pilih dan klik Perbarui
  • Jika tidak ditemukan, temukan di tab "Online> nuget.org" di sebelah kiri dan klik instal. Jika versi lama dari versi Jquery UI masih ada, itu dapat dihapus dari proyek

0

Jika Anda memiliki jQuery yang didefinisikan dua kali, maka Anda bisa mendapatkan kesalahan ini. Misalnya, jika Anda bekerja dengan Primefaces (sudah termasuk jQuery) dan Anda mendefinisikannya di tempat lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.