molily: Browsererkennung

Beitrag lesen

Irgendwie hab ich mir nicht vorgestellt, dass sich das so schwierig gestaltet.

Es ist nicht schwierig. Dir wurden nur Antworten gegeben, die die Sache schwieriger machten, als sie ist.

Schau dir einmal den Code von $.browser in der aktuellen jQuery-Version an. Dieser ist einfach zu extrahieren und ist gut getestet.

Ich werde mal den Vorschlag von Gunnar aufgreifen und ein wenig mit conditional compilations rumprobieren.

Das ist keine gute Idee. Wenn du einfach den IE erkennen herausfinden willst, so liegt es sehr fern, mit Conditional Compilation und anderen Tests auf unbedeutende und unbeteiligte Features zu arbeiten.

Falls jemand trotzdem noch eine kleine Funktion hat, welche den Browsertyp auslesen kann, dann bin ich natürlich dafür dankbar :)

Das ist der extrahierte Code aus jQuery 1.7.1:

var browser = (function () {  
  
var  
  rwebkit = /(webkit)[ \/]([\w.]+)/,  
  ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,  
  rmsie = /(msie) ([\w.]+)/,  
  rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,  
  browserMatch = uaMatch( navigator.userAgent ),  
  browser = {};  
  
if ( browserMatch.browser ) {  
  browser[ browserMatch.browser ] = true;  
  browser.version = browserMatch.version;  
}  
  
return browser;  
  
function uaMatch( ua ) {  
  ua = ua.toLowerCase();  
  var match = rwebkit.exec( ua ) ||  
  ropera.exec( ua ) ||  
  rmsie.exec( ua ) ||  
  ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||  
  [];  
  return { browser: match[1] || "", version: match[2] || "0" };  
}  
  
})();

browser ist nun ein Objekt, welches die Eigenschaften webkit, opera, msie, mozilla besitzt, je nachdem, welcher Browser bzw. welche Engine erkannt wurde. Außerdem gibt es die version-Eigenschaft, falls der Browser erkannt wurde. Siehe jQuery.browser.

if (!browser.msie) {  
  alert('Kein IE');  
}

Mathias