gruss Cybaer, hallo Sven, hallo Struppi,
Welche wären das?
Jede der Stellen, an denen nach der schrottigen Browsererkennung das
"Ergebnis" verwendet wird?
Direkt nach der UA-Auswertung z.B.:
var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat"
Und dabei wäre hier noch nichtmal eine Abfrage des Browsertyps nötig.
Richtig wäre, festzustellen, ob window eine Eigenschaft cssFloat
besitzt - oder halt Conditional Compilation.
http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.1.js
var userAgent = navigator.userAgent.toLowerCase();
jQuery.browser = {
version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
safari: /webkit/.test(userAgent),
opera: /opera/.test(userAgent),
msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
};
var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat";
die pruefung auf den userAgent halte ich auch fuer problematisch ... wohlgemerkt,
ich lehne eine ueberpruefung auf die render-engine keineswegs rundheraus ab, denn
es gibt durchaus situationen, so auch in den untiefen von [HTMLElement.style],
in denen es wichtig ist, dieses ding genau zu kennen, ohne dass man permanent
aufwendige einzelpruefungen leisten muss, wie z.b. auf [style.filter ... ] fuer
den msie oder frueher fuer die damals noch uneinheitlichen [style.opacity]-werte
wie [style.MozOpacity] oder [style.KhtmlOpacity].
Also ich habe jQuery nicht auf Herz und Nieren geprüft, aber wenn schon
solche Anfängerfehler drin sind, dann schwindet doch das Vertrauen arg ...
deswegen wuerde ich das ding so umsetzen:
jQuery.renderEngine = {
isKhtml: document.isRenderEngineKHTML(),
isPresto: document.isRenderEnginePRESTO(),
isGecko: document.isRenderEngineGECKO(),
isMsie: document.isRenderEngineMSIE(),
type: document.getRenderEngineType()
};
var styleFloat = jQuery.renderEngine.isMsie ? "styleFloat" : "cssFloat";
wobei die anwendung findenden getter so umgesetzt waeren:
document.isRenderEngineGECKO = (function () {return((typeof document.body.style.MozOpacity!=="undefined")&&(typeof document.body.style.MozOpacity==="string"));});
document.isRenderEngineKHTML = (function () {return((typeof document.body.style.KhtmlOpacity!=="undefined")&&(typeof document.body.style.KhtmlOpacity==="string"));});
document.isRenderEnginePRESTO = (function () {return((typeof document.body.style.opPhonemes!=="undefined")&&(typeof document.body.style.opPhonemes==="string"));});
document.isRenderEngineMSIE = (function () {return((typeof document.body.style.behavior!=="undefined")&&(typeof document.body.style.behavior==="string"));});
document.getRenderEngineType = (function () {return((document.isRenderEngineGECKO())?("gecko"):((document.isRenderEngineKHTML())?("khtml"):((document.isRenderEnginePRESTO())?("presto"):((document.isRenderEngineMSIE())?("msie"):(window.undefined)))));});
so long - peterS. - pseliger@gmx.net
--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« -
Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]