web-dev-qa-db-fra.com

Quel est le remplacement de $ .browser

Les balises de document jQuery $.browser comme obsolète. Alors, quel est le remplacement?

48
Rocky

Si vous avez vraiment besoin d'un bon vieux $ .browser

Selon le docs , cette fonctionnalité a été déconseillée dans 1.3 , et totalement supprimée dans 1.9 , bien qu'il soit toujours disponible dans le plugin jQuery Migrate officiel .

Si vous voulez bien faire les choses

En fonction de détection du navigateur est pas une bonne idée . La détection des fonctionnalités est la voie à suivre ( Modernizr est un excellent outil pour cela). jQuery avait une méthode $.support() pour fournir une certaine détection des fonctionnalités, mais elle est désormais également obsolète. Ils suggèrent également d'utiliser Modernizer.

Si vous avez vraiment besoin d'une détection par navigateur

La correction des bizarreries du navigateur n'est pas un cas d'utilisation valide pour la détection du navigateur, mais il existe d'autres cas d'utilisation. Utilisez n'importe quel outil de détection de navigateur Javascript (comme bowser ), car cette fonctionnalité ne dépend pas du tout de jQuery.

23
kapa

Basé sur plugin de migration jQuery , j'ai trouvé cela.

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"
    };
};
if ( !jQuery.browser ) {
    var 
    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;
}
32
takien

Il n'y a pas de remplacement direct. Vous devez utiliser la détection des fonctionnalités plutôt que la détection du navigateur (avez-vous une bonne raison de connaître le navigateur?), Vous pouvez donc utiliser le $.support propriété . (Cela en dit autant dans le doco API pour $.browser.)

3
nnnnnn
2
Emil Vikström

vous pouvez utiliser la variable de navigateur à partir de javascript

console.log(navigator)

mais si vous voulez vérifier la compatibilité avec une fonction de jquery vous pouvez utiliser le support var comme

$.support.ajax
1
Spidfire

Le jquery-browser-plugin est une bonne goutte en remplacement

1
Claus