63 votes

Remplacement le plus facile/léger pour la détection du navigateur jQuery 1.9 ?

Hier, plusieurs clients se sont plaints que certains codes ne fonctionnaient plus. Apparemment, il s'agit de plug-ins qui utilisent la fonction désormais obsolète jQuery.browser qui a cessé de fonctionner hier lorsque la version 1.9 de jQuery a été publiée.

J'ai (rapidement) regardé la documentation sur les changements de la version 1.9 et il s'agit de semble comme s'ils voulaient que je remplace des bibliothèques assez lourdes juste pour cela un fonction.

Existe-t-il un plug-in ou un extrait de code recommandé pour restaurer cette fonctionnalité ?

Pour ce dont ces sites ont besoin, c'est très basique ; je n'ai besoin que de la détection la plus basique d'IE vs FF vs tous les autres.

Suggestions ?

39voto

Fede Points 295

J'ai utilisé le code suivant répondu par Alexx Roche, mais je voulais détecter MSIE ainsi :

<script type="text/javascript">
   $(document).ready(function() {
      if (navigator.userAgent.match(/msie/i) ){
        alert('I am an old fashioned Internet Explorer');
      }
   });
</script>

J'espère que cela vous aidera !

22voto

Brad Points 61171

JQuery Migrate était créé pour permettre une rétrocompatibilité pendant que vous mettez à jour votre code.

https://github.com/jquery/jquery-migrate

En prime, il enregistre les fonctions obsolètes au fur et à mesure que vous les utilisez. Je vous conseille de l'essayer pendant que vous résolvez vos problèmes. Par ailleurs, vous devriez définir une version spécifique de jQuery pour vos sites. Il est bon d'effectuer des mises à jour, mais veillez à les tester avant de les mettre en production. Si vous utilisez un CDN, vous pouvez toujours spécifier une version spécifique dans le nom du fichier.

Maintenant, vous n'ont pas besoin d'un plugin jQuery pour ce que vous demandez. A consulter les navigator objet .

appCodeName: "Mozilla"
appName: "Netscape"
appVersion: "5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"
cookieEnabled: true
doNotTrack: null
geolocation: Geolocation
language: "en-US"
mimeTypes: MimeTypeArray
onLine: true
platform: "MacIntel"
plugins: PluginArray
product: "Gecko"
productSub: "20030107"
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"
vendor: "Google Inc."
vendorSub: ""

20voto

user989952 Points 215
var browser = {
        chrome: false,
        mozilla: false,
        opera: false,
        msie: false,
        safari: false
    };
    var sUsrAg = navigator.userAgent;
    if(sUsrAg.indexOf("Chrome") > -1) {
        browser.chrome = true;
    } else if (sUsrAg.indexOf("Safari") > -1) {
        browser.safari = true;
    } else if (sUsrAg.indexOf("Opera") > -1) {
        browser.opera = true;
    } else if (sUsrAg.indexOf("Firefox") > -1) {
        browser.mozilla = true;
    } else if (sUsrAg.indexOf("MSIE") > -1) {
        browser.msie = true;
    }
    console.log(browser.msie);

11voto

Synthy Points 150

Placez ce code dans votre site (comme le fichier js, ou après le code de jQuery...) :

var matched, browser;

// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.uaMatch = function( ua ) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
        /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
        /(msie) ([\w.]+)/.exec( ua ) ||
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
        [];

    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};

matched = jQuery.uaMatch( navigator.userAgent );
browser = {};

if ( matched.browser ) {
    browser[ matched.browser ] = true;
    browser.version = matched.version;
}

// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
    browser.webkit = true;
} else if ( browser.webkit ) {
    browser.safari = true;
}

jQuery.browser = browser;

10voto

Alexx Roche Points 457

J'ai utilisé le code suivant lorsque j'ai rencontré le même problème :

<script type="text/javascript">
 $(document).ready(function() {
    //if (!$.browser.webkit && ! $.browser.mozilla) { //depricated
    if (!navigator.userAgent.match(/mozilla/i) && 
        ! navigator.userAgent.match(/webkit/i) ){
        alert('Let me tell you about Mozilla');
    }
 });
</script>

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