Ist Verlass auf navigator.product === "Gecko"
Christian S.
- javascript
Hi
ich würde gerne Gecko Browser per JavaScript erkennen. Ist dabei Verlass auf
navigator.product === "Gecko"
oder kann man z.B. in Opera die product Eigenschaft spoofen?
Gruß!
Hi,
ich würde gerne Gecko Browser per JavaScript erkennen.
aus welchem Grund?
Ist dabei Verlass auf
navigator.product === "Gecko"
Nein.
Cheatah
Hi,
aus welchem Grund?
Da ich einen Gecko Bug korrigieren möchte.
Ist dabei Verlass auf
navigator.product === "Gecko"Nein.
Wie kann man denn sicher eine Gecko Engine feststellen?
Gruß!
Hallo,
Da ich einen Gecko Bug korrigieren möchte.
Der wäre?
Gruß
Hi,
Der wäre?
Wenn ein Element einen Border hat und gleichzeitg der berechnte Style nicht overflow === "visible" hat, dann ist der Border nicht in offsetLeft/Top enthalten.
Das ist wichtig, wenn man die Position eines Elementes berechnen will.
Weitere Kommentare/Code dazu:
< http://api.dojotoolkit.org/jsdoc/dojo/HEAD/dojo._getMarginBox>
< http://github.com/anotherjesse/taboo/commit/124e10a51f958e8d939052a43134b15a9e120811>
Es ist vielleicht kein richtiger Bug, da offsetLeft/Top nicht genau spezifiziert ist m.W., aber in allen anderen Fällen ist der Border halt mit drin.
Aber FF 3.0 ist das Problem nicht mehr vorhanden, jedoch kann man da ja auch getBoundingClientRect zur berechnung einer Position benutzen.
Gruß!
Hi,
nur irgendwie benutzen selbst große JS-Frameworks den Useragent zum Herausfinden von Browser und Version. Aber ist ja noch ungenauer.
Gruß!
Hi,
nur irgendwie benutzen selbst große JS-Frameworks den Useragent zum Herausfinden von Browser und Version. Aber ist ja noch ungenauer.
Daß man große Scripte schreibt, heißt ja nicht, daß man keine Fehler machen darf ...
Gruß, Cybaer
nur irgendwie benutzen selbst große JS-Frameworks den Useragent zum Herausfinden von Browser und Version. Aber ist ja noch ungenauer.
Daß man große Scripte schreibt, heißt ja nicht, daß man keine Fehler machen darf ...
Wenn ein kleines Script einen kleinen Fehler enthält, verändert das seinen Autoren, damit alles beim Alten bleibt.
Wenn eine grosse Anwendung einen grossen Fehler enthält, verändert das die Welt, damit alles beim Alten bleibt.
mfg Beat
Hi,
Wenn eine grosse Anwendung einen grossen Fehler enthält, verändert das die Welt, damit alles beim Alten bleibt.
Warum muß ich nur gleich an den IE denken?
Gruß, Cybaer
Moin.
Der wäre?
Wenn ein Element einen Border hat und gleichzeitg der berechnte Style nicht overflow === "visible" hat, dann ist der Border nicht in offsetLeft/Top enthalten.
Das ist in der Tat ein Fall, wo eine Überprüfung auf den Bug zwar möglich, aber vermutlich nicht sinnvoll ist: Es müssten Elemente und Elternelemente erzeugt (einmal mit overflow: visible, einmal ohne) und sogar ins DOM eingehängt werden, damit die offset-Eigenschaften verfügbar sind.
Eine Überprüfung auf Browsertyp und Version über das navigator-Objekt erscheint mir sinnvoller: Wer seinen User-Agent als FF2 wählt, ohne dass dieser vorliegt, muss dann halt mit falsch berechneten Boxen leben...
Christoph
Moin Moin!
aus welchem Grund?
Da ich einen Gecko Bug korrigieren möchte.
Ist dabei Verlass auf
navigator.product === "Gecko"Nein.
Wie kann man denn sicher eine Gecko Engine feststellen?
Gegenfrage: Die Versionen mit dem "Bug" oder die ohne?
Du mußt also ohnehin prüfen, ob der Bug vorhanden ist oder nicht. In dieser Prüfung ist es aber (mit an Sicherheit grenzender Wahrscheinlichkeit) nicht notwendig, auch noch zu prüfen, welche Browserengine benutzt wird.
Also:
if (detectBug()) {
enableWorkaround();
}
Beispiel:
var a=new Array();
if (!a.prototype.push) { // simple, nicht ganz exakte Prüfung für einen uralten IE-Bug
// hierher kommen nur antike IE und vielleicht der eine oder andere Exot, der Bug-kompatibel zum IE ist, sich aber nicht als IE identifiziert. In beiden Fällen ist allen Beteiligten geholfen.
a.prototype.push=function(x) { // nicht ganz perfekter Workaround
this[this.length]=x;
return this.length;
}
}
Alexander
Hi there,
ich würde gerne Gecko Browser per JavaScript erkennen.
aus welchem Grund?
Ist dabei Verlass auf
navigator.product === "Gecko"Nein.
Welcher komplett Gestörte bezeichnet so ein Posting als hilfreich???
Hi,
ich würde gerne Gecko Browser per JavaScript erkennen. Ist dabei Verlass auf
navigator.product === "Gecko"
Nein. Z.Zt. benutzt der Safari die auch.
Also:
is_saf=(navigator.product && navigator.product=="Gecko" && navigator.vendor && navigator.vendor.indexOf("Apple")>-1);
is_moz=(navigator.product && navigator.product=="Gecko" && !is_saf);
oder kann man z.B. in Opera die product Eigenschaft spoofen?
Nicht daß ich wüßte ...
Gruß, Cybaer