![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Christian S., 28. 06. 2008, 15:28
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ß!
Die folgende Nachricht zum Thema stammt von: Cheatah, 28. 06. 2008, 15:52
Hi,
»» ich würde gerne Gecko Browser per JavaScript erkennen.
aus welchem Grund?
»» Ist dabei Verlass auf
»» navigator.product === "Gecko"
Nein.
Cheatah
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Die folgende Nachricht zum Thema stammt von: Christian S., 28. 06. 2008, 16:00
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ß!
Die folgende Nachricht zum Thema stammt von: josh, 28. 06. 2008, 16:02
Hallo,
»» Da ich einen Gecko Bug korrigieren möchte.
Der wäre?
Gruß
Die folgende Nachricht zum Thema stammt von: Christian S., 28. 06. 2008, 16:55
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ß!
Die folgende Nachricht zum Thema stammt von: Christian S., 28. 06. 2008, 16:57
Hi,
nur irgendwie benutzen selbst große JS-Frameworks den Useragent zum Herausfinden von Browser und Version. Aber ist ja noch ungenauer.
Gruß!
Die folgende Nachricht zum Thema stammt von: Cybaer, 29. 06. 2008, 19:27
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
--
Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
(Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
Die folgende Nachricht zum Thema stammt von: Beat, 29. 06. 2008, 19:57
»» »» 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
--
/|
<°)))o>< / | /|
---- _|___/ | ><o(((°>
OvVVvO __ | ><o(((°>
<°)))o>< /v v\\\/ \|
<°)))o>< \^ ^/_/_ ><o(((°>
\^^^^/___/
><o(((°> ---- ><o(((°>
<°)))o>< ><o(((°>o
Die folgende Nachricht zum Thema stammt von: Cybaer, 30. 06. 2008, 08:06
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
--
Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
(Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
Die folgende Nachricht zum Thema stammt von: Christoph, 28. 06. 2008, 17:44
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
Die folgende Nachricht zum Thema stammt von: Alexander (HH), 28. 06. 2008, 16:33
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
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
Die folgende Nachricht zum Thema stammt von: Klawischnigg, 29. 06. 2008, 21:35
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???
Die folgende Nachricht zum Thema stammt von: Cybaer, 29. 06. 2008, 19:29
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
--
Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
(Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
© 1998-2006
Impressum, Software: Classic Forum