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?
La méthode $.browser
a été supprimée à partir de jQuery 1.9.
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.
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.
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:
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.
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>
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.
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
J'ai simplement ajouté
jQuery.browser = {
msie: false,
version: 0
};
après jquery script, parce que je ne me soucie plus de IE.
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.
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.)
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;
}
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
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.