web-dev-qa-db-fra.com

Uncaught TypeError: Impossible de lire la propriété 'msie' de non définie - Outils jQuery

Je reçois l'erreur suivante dans la console de développement Chrome:

Uncaught TypeError: Cannot read property 'msie' of undefined

D'après ce que j'ai compris, c'est parce que .browser est maintenant obsolète dans jQuery, mais j'utilise la dernière version des outils jQuery et que l'erreur est toujours générée. J'ai archivé le fichier js et le fichier existe. 

Comment puis-je contourner cela afin qu'il ne donne pas l'erreur?

176
Colin747

La méthode $.browser a été supprimée à partir de jQuery 1.9.

jQuery.browser() removed

La méthode jQuery.browser() est obsolète depuis jQuery 1.3 et est supprimée dans la version 1.9. Si nécessaire, il est disponible dans le plugin jQuery Migrate. Nous vous recommandons d'utiliser la détection de fonctions avec une bibliothèque telle que Modernizr.

- Guide de mise à niveau jQuery Core 1.9 .

Comme indiqué dans le Guide de mise à niveau, vous pouvez essayer d'utiliser le plugin jQuery Migrate pour restaurer cette fonctionnalité et laisser les outils jQuery fonctionner.

179
Alexander

Vous pouvez vérifier cette solution par AJ. C'est assez simple, il suffit de copier et coller les lignes de code suivantes.

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

Référence:

218
JrBriones

Utilisez la balise de script suivante dans votre fichier jsp/js:

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

cela fonctionnera à coup sûr.

43
Manisha Srivastava

J'utilise le code ci-dessous après l'inclusion du fichier js et cela fonctionne maintenant.

<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>
23
Atik Khan

Voici le bogue de jQuery Tools sur GitHub . Vous pouvez essayer l'un des correctifs.

edit - jQuery Tools ne me semble pas vraiment utile. Personnellement, je ne commencerais pas un nouveau projet avec une dépendance de cette bibliothèque à moins que je ne sois prêt à assumer moi-même le soutien.

6
Pointy

Remplacez votre JS par

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

Source lien

3
Bugfixer

J'ai simplement ajouté

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

après jquery script, parce que je ne me soucie plus de IE.

1
userlond

Je recevais cette erreur en utilisant JQuery 1.10 et JQuery UI 1.8. J'ai pu résoudre cette erreur en mettant à jour la dernière version de JQuery UI 1.11.4. 

Étapes pour mettre à jour l'interface utilisateur JQuery à partir de Visual Studio:

  • Accédez au projet ou à la solution 
  • Clic droit: "Gérer les paquets NuGet"
  • Sur la gauche, cliquez sur l'onglet "Packages installés"
  • Recherchez "UI JQuery (bibliothèque combinée)" et cliquez sur Mettre à jour.
  • Si trouvé, sélectionnez-le et cliquez sur Mettre à jour
  • Si vous ne le trouvez pas, trouvez-le dans l'onglet "En ligne> nuget.org" à gauche et cliquez sur Installer. Si l'ancienne version de la version de Jquery UI existe toujours, vous pouvez la supprimer du projet. 
0
LogicFirst

Comme je n'ai pas du tout l'intention de prendre en charge les anciennes versions de MS IE, j'ai simplement remplacé toutes les références à browser.msie par false. Ce n'est pas une solution intéressante, je sais, mais cela fonctionne pour moi.

(En fait, ils sont apparus sous la forme !browser.msie, ce qui pourrait être omis des conditions.)

0
Lerin Sonberg

Utiliser comme coup 

j'utilise cette commande et je résous

"Uncaught TypeError: impossible de lire la propriété 'msie' de indéfinie" Erreur

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

Utiliser comme coup

$(function (a) {

. . . . .Alors dans votre fonction, vous pouvez utiliser la propriété msie comme

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

bonne chance

0
HamidSadeghi

Si jQuery est défini deux fois, vous pouvez obtenir cette erreur. Par exemple, si vous travaillez avec Primefaces (il inclut déjà jQuery) et que vous le définissez ailleurs. 

0
Carlos UCR