Quelle est la bonne façon de détecter Opera en utilisant jQuery?
Amazon.com récemment mis à jour leur javascript, et cela cause des problèmes avec certains Opera navigateurs.
Leur code de détection du navigateur ressemble, mais c'est défectueuse:
function sitbReaderIsCompatibleBrowser() {
if (typeof(jQuery) == 'undefined') {
return false;
} else {
var version = jQuery.browser.version || "0";
var splitVersion = version.split('.');
return (
(jQuery.browser.msie && splitVersion[0] >= 6) //IE 6 and higher
|| (jQuery.browser.mozilla && (
(splitVersion[0] == 1 && splitVersion[1] >= 8) //Firefox 2 and higher
|| (splitVersion[0] >= 2)
))
|| (jQuery.browser.safari && splitVersion[0] >= 500) //Safari 5 and higher
|| (jQuery.browser.opera && splitVersion[0] >= 9) //Opera 5 and higher
);
}
}
Rien évidemment mal de sauts à moi avec ce code, mais je n'ai jamais utilisé jQuery avant, donc je ne sais pas.
Même si ce à quoi ressemble le code qu'il tente de laisser les utilisateurs de Opera à travers, quand je visite la page avec Opera 9.64-je un navigateur non pris en charge" du message. Si je change d'Opéra paramètres du rapport lui-même comme Firefox, la page fonctionne parfaitement! Avec cela à l'esprit, je suis sûr que c'est un problème avec le script et le navigateur.
Toute jQuery experts vous avez une suggestion?
Vous pouvez reproduire le comportement en visitant un livre sur Amazon et en cliquant sur le "regarder à l'intérieur de ce livre".
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Avant jQuery 1.3, vous pouvez utiliser jQuery.navigateur:
À partir de la version 1.3, vous devez utiliser jQuery.soutien à la place.
Principale raison pour cela est que devrait devrait éviter de vérifier les navigateurs, comme les caractéristiques peuvent changer d'une version à l'autre, ce qui rend votre code obsolète en un rien de temps.
Vous devez toujours essayer d'utiliser la détection de fonctionnalité à la place. Cela vous permettra de voir si le navigateur prend en charge la fonction que vous tentez d'utiliser, quel que soit le navigateur de la marque, version, etc.
Il y a un spécial fenêtre.opéra objet qui est présent dans tous les Opera 5+ navigateurs. Donc, quelque chose aussi simple que:
serait suffisant.
- Je vérifier pour l'Opéra comme ceci:
Pourquoi voudriez-vous jQuery?
Il est beaucoup mieux pour détecter javascript capacités plutôt que de navigateur client.
ie DOM, XmlHttpRequest, le concours complet (modèle d'événement.cible vs événement.srcElement), ActiveX, Java, etc
En mettant l'accent sur les fonctions de l'API que vous aurez besoin, plutôt que d'un navigateur cible vous permettra de créer un ensemble plus robuste de scripts, et forcément moins de revêtement spécial.
Ce lien ici, à opéra vont probablement vous dire de plus
Une façon très simple de l'Opéra eux-mêmes:
Source: http://my.opera.com/community/openweb/idopera/
La principale raison pour laquelle Amazon échoue sur l'Opéra est parce que l'envoyer différents code côté serveur déjà... Si vous visitez la même page avec Firefox, puis enregistrer la page et la rouvrir dans l'Opéra, il fonctionne très bien...
Mais ils ont promis de corriger cela dans le courant de janvier...
Je ne sais pas pour vous ( je n'ai jamais vraiment vérifier pour l'opéra, de toute façon), mais si les haut-fonctionnalités jQuery ne détecte pas de l'opéra, peut-être un bug avec le jQuery qui doit être corrigé. Je suppose que si c'est le cas, il devrait être résolu assez rapidement.
En courant HTML5 fois, vous pouvez également vérifier les fonctionnalités du navigateur au lieu souvent.
Je pense que c'est le meilleur
si ( fenêtre.de l'opéra.version() == 12) {
}
Cet exemple vérifier si opera version est 12. Très utile quand j'ai des problèmes avec la police face à l'Opéra.