2010-06-27 6 views
0

Comment puis-je vérifier si le navigateur actuel de l'utilisateur est Safari 5?Détection du navigateur via JS pour Safari 5

Mise à jour

Nous avons un contrôle sur notre site qui affiche un message « Navigateur non pris en charge » si l'utilisateur utilise un navigateur plus ancien. Actuellement, notre erreur apparaît pour la dernière version de Safari et elle ne devrait pas l'être.

+8

Attendez, arrêtez, * pourquoi * faites-vous cela? Vous ne devriez jamais vérifier * pour le navigateur *, vous devriez vérifier ** pour la fonctionnalité que vous voulez utiliser **. –

+0

En effet. (Presque) tous ces scripts de renifleurs de navigateur testent contre la chaîne User Agent, qui peut être * très * facilement usurpée dans Safari (donc il prétend que c'est un autre navigateur) et la solution de contournement que vous vouliez n'affiche pas. //www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ –

+0

duplication possible de [Browser Detection] (http://stackoverflow.com/questions/100898/browser -détection) –

Répondre

1

Voir:

jsBrowsersDetect

Ou

Browser detect

Mais ce n'est pas une bonne pratique, il est toujours préférable, cependant, pour éviter le code spécifique du navigateur entièrement lorsque c'est possible. La propriété JQuery $.support (si vous le souhaitez) est disponible pour la détection de la prise en charge de fonctionnalités particulières plutôt que sur le nom et la version du navigateur.

3

Si vous voulez vraiment faire cela, vous pouvez vérifier l'agent d'utilisateur dans les mêmes lignes que Ext utilise pour le faire.

Un extrait de Ext.js:

ua = navigator.userAgent.toLowerCase(), 
    check = function(r){ 
     return r.test(ua); 
    }, 
    DOC = document, 
    isStrict = DOC.compatMode == "CSS1Compat", 
    isOpera = check(/opera/), 
    isChrome = check(/\bchrome\b/), 
    isWebKit = check(/webkit/), 
    isSafari = !isChrome && check(/safari/), 
    isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2 
    isSafari3 = isSafari && check(/version\/3/), 
    isSafari4 = isSafari && check(/version\/4/), 

Je devine que pour Safari 5, vous pouvez écrire un test similaire où la version serait 5, bien que je n'ai pas vérifié ce que la chaîne de l'agent utilisateur 5 Safari ressemble à moi-même.

Questions connexes