199 votes

Erreur de Type Non Rattrapée : Impossible de lire la propriété 'msie' d'undefined - jQuery tools

J'obtiens l'erreur suivante dans la console de développement de Chrome :

Uncaught TypeError: Cannot read property 'msie' of undefined

Je crois savoir que c'est parce que .browser est maintenant déprécié dans jQuery. Cependant, j'utilise la dernière version des outils jQuery et l'erreur persiste. js et il est là.

Comment puis-je contourner ce problème pour que l'erreur ne se produise pas ?

1 votes

Cette erreur est insuffisante. À partir de quel élément essayez-vous de lire ceci ?

0 votes

Je n'ai pas utilisé .browser dans mon code. Il semble le détecter dans le fichier d'outils jQuery.

6 votes

Le site browser L'objet n'est pas seulement déprécié en 1.9, c'est disparu . Si jQuery Tools l'utilise encore, c'est que jQuery Tools est cassé.

271voto

JrBriones Points 559

Vous pouvez consulter 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 :

5 votes

Cela fonctionne parfaitement ! Mais je suppose que cela doit être utilisé comme un patch, plutôt que comme une solution, n'est-ce pas ?

0 votes

Merci, j'utilisais un plugin jquery qui utilisait cela et c'était une solution facile à court terme jusqu'à ce qu'un vrai correctif sorte.

0 votes

Merci. Cela a corrigé Query Tools v1.2.7, puisque nous avons mis à jour JQuery avec la dernière version.

195voto

Alexander Points 13227

Le site $.browser a été supprimée à partir de jQuery 1.9.

jQuery.browser() removed

Le site jQuery.browser() est dépréciée depuis jQuery 1.3 et est supprimée dans la version 1.9. Si nécessaire, il est disponible dans le cadre du plugin jQuery Migrate. Nous recommandons d'utiliser la détection des fonctionnalités avec une bibliothèque telle que Modernizr.

- Guide de mise à niveau de jQuery Core 1.9 .

Comme indiqué dans le Guide de mise à niveau, vous pouvez essayer d'utiliser la fonction plugin jQuery Migrate pour restaurer cette fonctionnalité et laisser jQuery Tools travailler.

49voto

Utilisez la balise 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>

ça va marcher à coup sûr.

0 votes

Assurez-vous d'avoir une connexion internet qui fonctionne. Si vous utilisez une connexion hors ligne, téléchargez le fichier js à partir de votre ordinateur, puis consultez ce fichier.

0 votes

Je peux voir qu'il est hébergé en ligne... Quoi qu'il en soit, merci. J'ai résolu le problème avec jquery.noConflict() car j'avais deux versions de jquery utilisées sur la même page.

0 votes

@User5590 : à tout moment :)

7voto

Pointy Points 172438

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

modifier - il ne me semble pas que jQuery Tools reçoive beaucoup de soutien. Personnellement, je ne commencerais pas un nouveau projet dépendant de cette bibliothèque à moins d'être prêt à prendre en charge le support moi-même.

1 votes

+1, jQuery Tools a été un désordre complet ces dernières années. Le fait qu'il ne bénéficie pas d'un grand soutien est très exact et constitue un énorme euphémisme. Je pense qu'il n'y a eu qu'une seule mise à jour mineure depuis jQuery 1.3 et aucun développeur au cours des deux dernières années.

0 votes

D'accord, quelqu'un a-t-il une recommandation pour une bibliothèque de remplacement ? Quelque chose avec un défileur, une superposition et un curseur d'entrée de gamme ? J'évite jQuery mobile parce qu'il est livré pré-stylé. Je l'ai déjà stylisé et c'est un cauchemar.

5 votes

Je me suis contenté de trouver des bibliothèques minimales bien écrites pour chaque fonction que je veux, par exemple un curseur d'entrée de gamme : loopj.com/jquery-simple-slider , scroller/slider : bxslider.com . J'ai trouvé un meilleur support et une empreinte plus petite en trouvant des bibliothèques individuelles comme celles-ci.

3voto

Lerin Sonberg Points 55

Comme je n'ai pas l'intention de supporter les anciennes versions de MS IE, j'ai simplement remplacé toutes les références à browser.msie con false . Ce n'est pas une solution agréable, je sais, mais elle fonctionne pour moi.

(En fait, ils sont apparus en tant que !browser.msie qui pourrait être omis des conditions).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X