Kai345: IE und Ajax

Beitrag lesen

[latex]Mae  govannen![/latex]

Mahlzeit Kai345,

Das ist aber eher ungünstig ... ich würd's vielleicht mal *auf* den Server packen.

prototype.js packt man ausschließlich in die nächstgelegene Rundablage.

Wieso? Gibt's dafür auch objektive Gründe? Ist eins der anderen verbreiteten JS-Frameworks besser?

Ein immer wieder heiß diskutiertes Thema.

Prototype.js baut komplett Browser-Sniffing auf:

  Browser: {  
    IE:     !!(window.attachEvent &&  
      navigator.userAgent.indexOf('Opera') === -1),  
    Opera:  navigator.userAgent.indexOf('Opera') > -1,  
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,  
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 &&  
      navigator.userAgent.indexOf('KHTML') === -1,  
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)  
  }, 

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.

  • 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).
     Texte zu den Problemen, die manche damit sehen: 1 en 2 en

Dieser Thread (en) (leider nur über den minderwertigen Newsreader-Ersatz Google Groups) befasst sich damit, es gibt viele weitere. Schon die erste Antwort von David Mark fasst die Problem kurz zusammen.

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:?