2012-01-17 19 views

risposta

-1

Uso jQuery.browser.version invece di supporto

+2

mi è stato chiesto di ottenere questo fatto con 'jQuery.support' –

+1

Sì, e ho detto di utilizzare bro wser.version invece di supporto. Non è possibile con il supporto. – Grrbrr404

+1

FWIW, 'jQuery.browser.version' potrebbe funzionare per gli utenti che utilizzano effettivamente versioni precedenti di IE, ma non riesce a eseguire test utilizzando la modalità compatibilità per una versione precedente con IE9 (la versione mostra come" 9.0 "anziché la versione precedente.) Tuttavia, 'jQuery.support' funziona con la modalità di compatibilità IE9. –

2

jQuery.support è per rilevare funzionalità del browser. Per rilevare il browser utilizzare la versione jQuery.browser:

if ($.browser.msie && $.browser.version.substr(0,1)<7) { 
//IE7 

} 

Aggiornamento: $ .Browser è deprecato ora, non ne fanno uso.

+0

Stavo chiedendo di farlo con 'jQuery.support' –

+0

Penso che questo rileverà solo IE6 e sotto. Dovresti usare l'operatore di confronto '<=' invece se vuoi includere anche IE7. –

2

come spiegato, .support è per il rilevamento delle funzioni. se vuoi rilevare il browser, usa solo .browser.

var ua = $.browser; 
if (ua.msie && ua.version.slice(0,1) == "8") { 
    alert('IE 8'); 
} else if (ua.msie && ua.version.slice(0,1) == "7") { 
    alert('IE 7'); 
} else { 
    alert('something else'); 
} 
+10

'$ .browser' è deprecato e probabilmente verrà rimosso nelle versioni future. –

-1

Prova $.browser, che ti consente di sapere se la versione del browser è inferiore a IE9

var isM = false; 
$.each($.browser, function (i, val) { 
    if ($.browser.msie && parseInt(val) < 9) isM = true; 
}); 
+0

Stavo chiedendo di fare questo con 'jQuery.support' –

+0

Come @oezi menzionato .support è per il rilevamento delle funzionalità. –

+0

Non c'è bisogno di $ .each qui. – mhansen

8
if (jQuery.support.leadingWhitespace == false){ 

... code for IE7-IE8 ... 

} 
else { 
... 
} 
+0

un altro sarebbe "opacità" (ad esempio jQuery.support.opacity == false) – IberoMedia

41

Questo è del tutto possibile con il supporto di:

if (!$.support.leadingWhitespace) { 
    //IE7 and 8 stuff 
} 

Questo rileva anche IE 6 tuttavia, se non si desidera che IE 6 esegua questo blocco di codice, sarà necessario un altro flag per escluderlo.

Una buona ragione per non utilizzare il browser è che si tratta di una funzionalità deprecata e probabilmente verrà rimossa da un plug-in con versione 1.9. (Vedere i commenti sul risposta a How to detect IE7 with jQuery?)

"Si consiglia di non utilizzare questa proprietà, si prega di provare a utilizzare il rilevamento funzione invece (vedi jQuery.support) jQuery.browser può essere spostato in un plugin in una versione futura. di jQuery" http://api.jquery.com/jQuery.browser/

ecco un esempio di lavoro: http://jsfiddle.net/AGtG8/16/

+0

Perfetto! ps: Rileva anche IE5. –

+0

Risposta elegante. Odio i metodi "useragent" o "html tags". – stonyau

3

un trucco che ho trovato è quello di aggiungere Conditionnal Tag in HTML

<!--[if lt IE 7]><body class="ie ie6 lte9 lte8 lte7"><![endif]--> 
<!--[if IE 7]><body class="ie ie7 lte9 lte8 lte7"><![endif]--> 
<!--[if IE 8]><body class="ie ie8 lte9 lte8"><![endif]--> 
<!--[if IE 9]><body class="ie ie9 lte9"><![endif]--> 
<!--[if !IE]><!--><body class="not-ie"><!--<![endif]--> 

Poi utilizzare jQuery come questo:

$('body.ie7') 

Aiuta anche per i CSS in IE specifico

body.ie6{ margin: 0; } 

Non so se è buono per voi, ma in ogni modo, che è ancora un'opzione.

+0

molte volte quando si scrivono plugin che girano su altri siti Web, non è possibile farlo. inoltre, questo è spreco di byte e rende molto incasinato il tuo codice. – vsync

+1

@vsync No, non è così. È una buona pratica che anche [HTML5 Boilerplate predica]. (Https://github.com/h5bp/html5-boilerplate/blob/master/index.html#L1-L5) –

+0

@MT - e perché dovrei ascoltare HTML5 boilerplate? Sono stato nel business abbastanza a lungo da possedere opinioni personali ... probabilmente più lungo dei ragazzi lì. – vsync

5

stare attenti con il seguente perché include anche IE10:

if ($.browser.msie && $.browser.version.substr(0,1)<7) { 
//<IE7 
} 

un uso migliore:

if ($.browser.msie && parseInt($.browser.version,10)<7) { 
//<IE7 
} 
+3

'$ .browser' non è più incluso in jQuery 1.9+, puoi aggiungerlo nuovamente usando il plugin jQuery Migrate se necessario. – nullability

1

ho notato molti modi diversi di fare questo, questo non fa uso anche se $.support Ho trovato che funziona molto bene.Inoltre, jquery ha appena annunciato che rimuoverà qualsiasi supporto per IE 6,7,8 in jQuery 2.0 (http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/).

var msVersion = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/), 
     msie = !!msVersion, 
     ie6 = msie && parseFloat(msVersion[1]) < 7; 

    // Help prevent flashes of unstyled content 
    if (!ie6) { 
    //Do Something here. 
    } 

Felice codifica!

0

Io lo uso per verificare se il browser è IE 8 o meno

cambiare la versione cioè semplicemente aggiornare il 8 ad un altro esempio verion

if (jQuery.browser.msie && jQuery.browser.version.substr(0,1) <= 8) { 
    runIECode(); 
} else { 
    runOther(); 
} 
0

ho aggiunto qualche riga di Javascript per farlo funzionare ancora:

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) { 
    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; 
} 
0
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
    var ieversion = new Number(RegExp.$1); 
    alert(ieversion < 9); 
} 
Problemi correlati