Kai345: IE und Ajax

Beitrag lesen

[latex]Mae  govannen![/latex]

das heißt, wenn _das_ schiefgeht, funktioniert ggf. gar nichts mehr richtig, weil die Verzweigungen immer wieder auf diesem ermittelten Wert basieren. Und daß Sniffing die schlechtest-mögliche Ermittlungsgstategie eine(s|r) Browser(s|version) ist, sollte bekannt sein. Sogar JQuery hat es in den neuesten Versioenen nach langem Kampf inzwischen abgeschafft.

Was heißt denn »selbst jQuery« - soweit ich weiß, ist jQuery die erste Bibliothek, die ihre Strategie diesbezüglich grundsätzlich ändert.

… nachdem J.Resig lange Zeit heftigen Widerstand dagegen geleistet hatte, darauf zu verzichten, ja. Deshalb diese Formulierung.

Dadurch ändert sich intern erstmal nicht alles zum Positiven. Das Browsersniffing wurde keineswegs willkürlich verwendet, sondern dann, wenn die üblichen Objektabfragen nicht zum Ziel geführt haben. Jetzt müssen am Anfang erstmal einige Feature-Erkennungen laufen, damit die Bibliothek auf diesen aufbauen kann. Browserbugs und -eigenheiten durch Tests zu erkennen, ist dann wieder eine Wissenschaft für sich und kann genauso fehlerträchtig sein.

Ich halte es ohnehin für unmöglich, diesbezüglich hundertprozentige Sicherheit zu erreichen, dazu gibt es zu viele Engines in zu vielen Versionen, aber man sollte sich zum Ziel setzen, so nahe wie möglich heranzukommen. Mag sein, daß jQuery bis vor kurzem (d.h bevor das Sniffing abgeschafft wurde) nur noch gezielt eingesetzt worden ist, aber ich meine, daß es nicht immer so war. jQuery bewegt sich jedenfalls - im Gegensatz zu prototype.js, mootools usw. langsam in die richtige Richtung.

Insofern mag sich der Verzicht auf Browsererkennung über navigator irgendwie zukunftssicherer anfühlen, aber ob sich das an den schwierigen Stellen in der Praxis bewährt, halte ich immer noch für unentschieden.

Es verringert die Fehldeutbarkeit von Browsern und damit Fehleranfälligkeit. Auf manchen Seiten unfähiger Autoren kommt man leider nur weiter, wenn man "sich" als FF oder IE ausgibt. Wenn man dann per Sniffing als falscher Browser erkannt wird, kommt man unter Umständen trotzdem nicht weiter, wenn die falschen Eigenschaften/Methoden herangezogen werden.

  • Prototype.js erweitert im großen Stil die Basis-Objekte (die Meinungen, ob das schlecht ist, sind allerdings sehr geteilt; Crockford z.B. befürwortet es, solange es in einem sehr kontrollierten Rahmen bleibt).

Wirklich elegant kommt man nicht heraus - entweder man baut sich seine eigene Objekthierarchie mit 29 Namespaces, baut abgeleitete, erweiterte Objekttypen (MyString, MyNumber, MyArray) oder erweitert schlicht die bestehenden Objekttypen prototypisch, wie es das Grundkonzept von JavaScript nahelegt. Um alle Probleme dabei zu umschiffen, fehlen JavaScript gewisse OO-Fähigkeiten.

Wie ich in der Klammer schon andeutete, gibt es halt verschiedene Meinungen. Ich halte mich da eher raus (und erweitere eher moderat).

Dieser Thread (en)

... zeigt mit seiner Diskussionskultur lediglich deutlich, warum man dem Usenet und dessen Gestalten vor allem den Rücken zukehren sollte.
Also ich habe bei der Lektüre überhaupt nichts gelernt. Kannst du das nochmal für mich zusammenfassen?

Gerne, sogar übersetzt:

1. Idiot!
2. Selber Idiot
3. Du hast keine Ahnung von Javascript
4. Vollidiot
5. Leg dir nen Namen zu
6. Ihr seid alle doof!
7. Lerne quoten!
8. Komm wieder, wenn du Javascript gelernt hast
#Zufallszahl(0,4)
#Wenn 1 oder 3 gehe zu 1.
#Wenn 2 oder 4 gehe zu 4.
9. *plonk*

(Der Autor hat sich gewisse künstlerische Freiheiten bezüglich Übersetzung und Kernaussagen herausgenommen sowie die Threadlogik in Pseudocode eingefügt)

Cü,

Kai

--
Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?