Détection des navigateurs non pris en charge par jQuery (2)
Pardonnez-moi, si il n'y est une réponse évidente à cette question, mais je n'ai pas été capable de le trouver. J'envisage de passer à jQuery 2 et, bien que je ne suis pas inquiète de soutenir les navigateurs plus anciens, je voudrais être en mesure d'indiquer aux utilisateurs non pris en charge les navigateurs qu'ils ne peuvent pas utiliser le site.
Je vois ici (http://blog.jquery.com/2013/03/01/jquery-2-0-beta-2-released/) que vous pouvez utiliser les commentaires conditionnels pour la branche .js fichiers sur les différentes versions de IE, mais je crois que jQuery 2.0 gouttes de soutien pour un certain nombre d'autres navigateurs, pas juste c'est à dire, donc je ne pense pas que serait-il le faire seul [edit: c'est faux, voir plus modifier ci-dessous].
Dans un monde idéal, j'aimerais passer à jQuery 2 et ensuite d'avoir une seule fonction javascript, qui est appelée lorsque jQuery me dit qu'il ne prend pas en charge le navigateur. Est-il un moyen simple de faire ce que je suis absent?
Grâce.
EDIT:
Je suis tombé sur ce post (http://bugs.jquery.com/ticket/13404) qui m'a dirigé ici: http://jquery.com/browser-support/. Il s'avère que, en termes de soutien, jQuery 2 ne diffère de jQuery 1.9 sur IE navigateurs. En conséquence, peut-être une meilleure question à se poser est de savoir comment détecter les navigateurs qui ne sont pas pris en charge par jQuery (en général, pas seulement la version 2) - j'ai mis à jour la question du titre.
EDIT2:
Comme fonction de détection est la plus recommandée approche de cette question, la prise en charge jQuery méthode semble pertinent ici (http://api.jquery.com/jQuery.support/). Cependant, il semble également tout à fait improbable de s'appuyer sur (car cela peut changer sans préavis).
Je suppose que cela crée de la question clé. Comment suis-je censé avoir une idée de ce que jQuery caractéristiques sont ou ne sont pas soumises à des cas potentiels de non-soutien de vieux navigateurs? Par exemple, si quelqu'un vient sur le site avec un 4-version-vieille copie de Firefox, je n'aurais pas tout idée de ce que propose ce que j'avais besoin de tester pour. Il serait ace si jQuery pourrait offrir une sorte de entièrement prise en charge de test de fonctionnalités, comme ça, pour HTML5: http://html5test.com/
EDIT3:
D'accord, donc, avec le conditionnel inclure des énoncés (mis en évidence dans les réponses ci-dessous, et sur jQuery site), vous pouvez traiter avec les anciennes versions d'IE. Cependant, pour les autres navigateurs, c'est un peu compliqué. Puisque vous ne pouvez pas compter sur jQuery pour tout vous dire, à propos du navigateur pour soutenir la fonction de x, y, ou z, mon approche est tout simplement d'interroger le javascript sous-jacentes. Si vous souhaitez interroger en fonction de CSS, vous pouvez utiliser modernizr. Pour javascript support, c'est la méthode que j'utilise pour détecter SUPER les anciennes versions des autres navigateurs:
function browser_ok() {
if (
( !Array.prototype.indexOf ) ||
( !Array.prototype.forEach ) ||
( !String.prototype.indexOf ) ||
( !String.prototype.trim ) ||
( !Function.prototype.bind ) ||
( !Object.keys ) ||
( !Object.create ) ||
( !JSON ) ||
( !JSON.stringify ) ||
( !JSON.stringify.length ) ||
( JSON.stringify.length < 3 )
)
{
return false;
}
//# local storage support
//source: http://diveintohtml5.info/storage.html
try {
var local_storage_support = ( 'localStorage' in window && window['localStorage'] !== null );
if ( !local_storage_support ) {
throw new Error("local_storage_support: failed");
}
}
catch ( e ) {
return false;
}
//# AJAX uploads
if ( !window.FormData || !window.FileReader ) {
return false;
}
//# HTML data elements
var body = $("body");
body.data("browser_support_test",42);
if ( body.data("browser_support_test") !== 42 ) {
return false;
}
else {
body.removeData("browser_support_test");
}
return true;
}
AFAICT, cette fonction doit éliminer tous les navigateurs qui pourrait donner de la difficulté à jQuery pour ses fonctionnalités de base. Si vous voulez faire quelque chose de compliqué, alors il y a probablement des fonctions bien spécifiques que vous savez que vous avez besoin, de sorte que vous pouvez vérifier en particulier.
source d'informationauteur EleventyOne
Vous devez vous connecter pour publier un commentaire.
On dirait qu'il tombe de soutien pour IE 6, 7 et 8 - vous devez être capable d'utiliser:
HTML:
JS:
Si vous décidez de prendre en charge les navigateurs plus anciens, mais encore envie les améliorations jQuery équipe ont inclus dans le 2.x, vous pouvez utiliser le 1.x version: http://jquery.com/download/
Mise à jour:
Il est difficile/impossible de détecter tous les navigateurs qui ne supportent pas de jQuery, la raison en est que jQuery est juste une bibliothèque javascript.
Les différents navigateurs et les versions utilisées à l'utilisation de différentes méthodes de faire certaines choses de base en javascript (comme ajax), cela signifie que certains vieux navigateurs prennent en charge certaines fonctionnalités et ne prend pas en charge les autres. Il n'y a pas d'un simple ce navigateur prend en charge toutes les fonctionnalités ou ce navigateur ne prend pas en charge toutes les fonctionnalités test.
Rob W suggestion est vraiment bonne, le service de la nouvelle version (2.x) pour les navigateurs modernes et 1.x version (avec prise en charge) pour les anciens navigateurs.
Ont un coup d'oeil à cet article: Gracieux dégradation par rapport à l'amélioration progressive, et d'envisager l'utilisation de la Modernizr de la bibliothèque. Cela vous permet de vérifier les caractéristiques du navigateur de l'utilisateur prend en charge et vous permet d'écrire vos applications afin de tirer pleinement parti des dernières avancées tout en offrant une bonne expérience pour les utilisateurs de navigateurs plus anciens.
Une façon d'obtenir les avantages de jQuery 2.0, tout en soutenant IE 6, 7 et 8, est d'utiliser les commentaires conditionnels:
jquery.js
hébergé sur votre serveur) est chargé.