Yakalanmamış TypeError: undefined - jQuery araçlarının 'msie' özelliği okunamıyor


190

Chrome geliştirici konsolunda aşağıdaki hatayı alıyorum:

Uncaught TypeError: Cannot read property 'msie' of undefined

Benim anlayış çünkü .browserşimdi jQuery artık kullanılmıyor çünkü ben jQuery araçların son sürümünü kullanıyorum ve hala hata veriyor, ben jsdosyaya kontrol ve orada.

Hatayı vermemesi için bu sorunu nasıl çözebilirim?


1
bu hata yetersiz. Bunu hangi öğeden okumaya çalışıyorsunuz?
Siddharth Gupta

Kodumda hiç kullanmadım .browser. Görünüşe göre jQuery tools dosyasında tespit ediyor.
Colin747

6
browserNesnesi, yalnızca değil kaldırılan 1.9 de, bu oluyor gitmiş . JQuery Tools hala kullanıyorsa, jQuery Tools bozulur.
Sivri

1
@Alexander hatadan kurtulmuş gibiydi. İsterseniz bir cevap verebilirsiniz.
Colin747

3
En son jQuery Tools yalnızca jQuery 1.7 ile test edilmiştir. jQuery 1.9, jQuery Tools'un en son sürümüyle uyumlu değildir; bu kadar basit. JQuery Tools'u boşaltın veya jQuery'i çalışan 1.9'un altındaki herhangi bir sürüme düşürün. Aksi takdirde, kimsenin jQuery Tools'u güncellemesini beklemeyin, son birkaç yıldır geliştirici olmadan.
Sparky

Yanıtlar:


189

$.browserYöntem jQuery 1.9 olarak kaldırılmıştır.

jQuery.browser() removed

jQuery.browser()Yöntem jQuery 1.3 yana kaldırıldı ve 1.9 uzaklaştırılır. Gerekirse, jQuery Migrate eklentisinin bir parçası olarak mevcuttur. Modernizr gibi bir kütüphaneyle özellik algılamayı kullanmanızı öneririz.

- jQuery Core 1.9 Yükseltme Kılavuzu .

Yükseltme Kılavuzu'nda belirtildiği gibi, bu işlevi geri yüklemek ve jQuery Tools'un çalışmasına izin vermek için jQuery Migrate eklentisini kullanmayı deneyebilirsiniz .


242

Bu çözümü AJ ile kontrol edebilirsiniz. Oldukça basit, sadece aşağıdaki kod satırlarını kopyalayıp yapıştırın.

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;
    }
})();

Referans :


4
Mükemmel çalışıyor! Ama bunun bir çözüm yerine bir yama olarak kullanılması gerektiğini düşünüyorum değil mi?
Jobokai

Teşekkürler, bunu kullanan bir jquery eklentisi kullanarak ve bu gerçek bir düzeltme ortaya çıkana kadar kolay kısa vadeli bir çözüm oldu.
Joe Meyer

Teşekkürler. Bu sabit Sorgu Araçları v1.2.7, çünkü JQuery'yi en son sürüme yükselttik.
bsentosa

1
WOW, Sana 10 artı verebilirsem, şimdi yapacağım.
Iman Hejazi

9
IE11 dizede MSIE belirteci olmadığından, bu yanıt artık doğru değildir userAgent.
Dave Methvin

47

Jsp / js dosyanızda aşağıdaki komut dosyası etiketini kullanın:

<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>

bu kesinlikle işe yarayacaktır.


İnternet bağlantınızın çalıştığından emin olun. Çevrimdışı kullanıyorsanız, sonunda js dosyasını indirin ve ardından bu dosyaya bakın.
Manisha Srivastava

Peki ben çevrimiçi barındırılıyor görebilirsiniz ... neyse ben jquery.noConflict () ile aynı sayfada kullanılan jquery iki sürümü vardı olarak çözdüğünüz için teşekkürler.
Prerit Mohan

@ User5590: her zaman :)
Manisha Srivastava

Üretimde küçültülmemiş jquery kullanılmamalıdır: örneğin cdnjs.com adresini kontrol edin . Bunun yerine HTTPS kullanın.
Takman

27

Ben js dosyası dahil sonra aşağıdaki kodu kullanın ve şimdi çalışıyor.

<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>

Bu bağlantı linki bana hata veriyor, ancak bu kod parça bana çok teşekkürler adam yardımcı yazdı.
Saman

7

İşte GitHub'daki jQuery Tools hatası . Yamalardan birini deneyebilirsiniz.

edit - bana jQuery Tools çok destek alıyor gibi görünmüyor. Kendimi desteklemeye hazır olmadıkça şahsen bu kütüphaneye bağımlı yeni bir projeye başlamazdım.


1
+1, jQuery Tools son birkaç yıldır tam bir karmaşa oldu. Bunun "fazla destek almaması" çok doğru ve büyük bir eksikliktir. Bence jQuery 1.3'ten beri sadece küçük bir güncelleme var ve son birkaç yıldır hiçbir geliştirici yok.
Sparky

Kabul etti, kimse yeni bir kütüphane için bir öneri var mı? Kaydırıcı, yer paylaşımı ve aralık giriş kaydırıcısıyla ilgili bir şey mi var? Önceden tasarlanmış olduğu için jQuery mobile'dan kaçınırım. Daha önce tasarladım ve bu bir kabus.
inorganik

5
Sadece istediğim her fonksiyon için iyi yazılmış minimal kütüphaneler bulmaya geçtim. yani: aralık giriş kaydırıcısı: loopj.com/jquery-simple-slider , kaydırma çubuğu / kaydırıcı: bxslider.com . Çok daha iyi destek buluyorum ve genel olarak daha küçük ayak izi bu gibi kütüphaneler buluyor
jfeust

4

Basitçe ekledim

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

jquery script sonra, çünkü artık IE umurumda değil.


3

JS'nizi ile değiştirin

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

Kaynak bağlantısı


Jquery 1.7+ için şu anda en son jquery-ui:<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>
Saatçi

0

Eski MS IE sürümlerini desteklemeyi düşünmediğim için, tüm referansları browser.msiebununla değiştirdim false. Güzel bir çözüm değil, biliyorum, ama benim için çalışıyor.

(Aslında, !browser.msieşartlardan çıkarılabilecek gibi görünüyorlardı .)


0

Darbe gibi kullanın

$(function (a) {

. . . . . sonra işlevinizde msie özelliğini kullanabilirsiniz.

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

iyi şanslar


0

Darbe gibi kullanın

bu komutu kullanıyorum ve çözüyorum

"Uncaught TypeError: undefined 'msie' özelliği okunamıyor" Hatası

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

0

JQuery 1.10 ve JQuery UI 1.8 kullanırken bu hatayı alıyordum. Bu hatayı en son JQuery UI 1.11.4 sürümüne güncelleyerek çözebildim.

Visual Studio'dan JQuery kullanıcı arabirimini güncelleştirme adımları:

  • Proje veya Çözüm'e gidin
  • Sağ tıklama: "NuGet Paketlerini Yönet"
  • Sol tarafta "Yüklü Paketler" sekmesini tıklayın
  • "JQuery UI (Birleşik kitaplık)" için arama yapın ve Güncelle'yi tıklayın
  • Bulunursa, seçin ve Güncelle'yi tıklayın
  • Bulunamazsa, soldaki "Çevrimiçi> nuget.org" sekmesinde bulun ve yükle'yi tıklayın. Jquery UI sürümünün eski sürümü hala mevcutsa, projeden silinebilir

0

İki kez jQuery tanımladıysanız, bu hatayı alabilirsiniz. Örneğin, Primefaces ile çalışıyorsanız (zaten jQuery içerir) ve başka bir yerde tanımlarsanız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.