Calocybe: Arrays in Mac-kompatiblen Webseiten

Beitrag lesen

Hi!

Dabei stosse ich auf ein Problem bei der Kompatibilität mit Macintosh-Browsern: Offensichtlich unterstützt MSIE 5.x für Mac die Befehle
MeinArray.push();
MeinArray.shift();
MeinArray.pop();
nicht, was ich einigermassen skandalös finde.

Nicht nur der. Auch gar nicht so alte IE fuer Windows koennen das nicht.

Meine Frage: Gibt's taugliche und, da ich auf knappen Code achte, kurze Alternativen für push, shift, pop? Ein Riesendank für entscheidende Tipps! twb

Yupp. Du kannst auch eingebauten Objekten weitere Eigenschaften und Funktionen hinzufuegen. Dazu musst Du z.B. an
  Array.prototype.push
eine neue Funktion zuweisen, die genau das macht, was push() eben so macht. Du willst das natuerlich nur auf den Mac-Browsern machen. Das sagt man aber besser allgemeiner als: Du willst das nur bei solchen Browsern machen, die push() nicht schon von selber koennen. Dann kannst Du Dir naemlich auch irgendwelche durchgeknallten Browserweichen sparen, die sowieso nicht funktionieren.
Das ganze sieht dann ungefaehr so aus (ungetestet):

if (!Array.prototype.push) Array.prototype.push = function () {
      var i;
      for (i=0; i<arguments.length; i++)
          this[this.length] = arguments[i];
      return this.length;
  }

Jetzt hat garantiert jeder Browser eine Array.push()-Funktion, die Du ganz normal ohne weitere Umstaende benutzen kannst. Das gleiche machst Du jetzt noch fuer die anderen beiden Methoden, und das war's.

So long

--
Wenn alles was Du hast, ein Hammer ist, sieht jedes Problem wie ein Nagel aus!

[calokey: js javascript object prototype add method Array push pop shift slice splice]