Seit dem 03.01.2008 gibt es eine neue Scriptaculous Version.
Scriptaculous steht jetzt in der Version script.aculo.us 1.8.1 zur Verfügung und behebt damit einige Bugs und hat neue Features und Änderungen bekommen.
Gemerkt habe ich es, als ich gestern den Internet Explorer 7 Test für diese Communty durchgeführt habe. Bei bestimmten stellen gab es Scripting-Fehler und der Internet Explorer bot mir an, des Javascript Debugging Modus auszuführen. Sodann habe ich bemerkt, dass der Fehler nicht bei mir, sondern in der externen Library liegt.
Nachdem ich die neue Version aufgespielt habe, lief alles korrekt.
Das Verhalten, dass bei Highlight-Events bei mehrfachem Klicken, während das Highlight-Event ausgeführt wird, die ursprüngliche Farbe der Schaltleiste nicht mehr angenommen wird, scheint leider nicht gefixt zu sein.
Is it a Bug or a Feature?
Außerdem hatte ich versucht, eine select-Box mit Hilfe von
document.getElementById('myid').innerHTML='<option name="name">Value</option>';
zu füllen. Das klappt im Firefox wunderbar. Der Internet Explorer spielt an der Stellen aber nicht mit – und vielleicht hat er ja auch Recht. Denn Microsoft soll das innerHTML als erstes benutzt haben. Ergebnis ist, dass die Listbox zwar Elemente hat, diese sind aber unsichtbar und nicht anzuklicken.
Abhilfe schafft die Methode
new Option(name, value, defaultSelected, selected);
Konkret sieht das dann so aus. Wir haben eine Listbox
<select name="myname" id="myname"> <option name="">Value</option> </select>
Wenn man nun ein Element anfügen will, geht das folgendermaßen:
MeinNeuerEintrag = new Option('MeinName', 'MeinValue', false, false);
document.getElementById('myname').options[document.getElementById('myname').length] = MeinNeuerEintrag;
Die letzten beiden Parameter von new Option geben an, ob das Listenelement automatisch default mässig ausgewählt sein soll bzw. ob es ausgewählt sein soll.
Das mit dem kompliziert aussehendem Konstrukt
document.getElementById('myname').length
hat den Grund, dass alle Optionen als Array dargestellt werden. Das erste Element hat den Iterator 0, das zweite 1 usw.
Schreibt man statt
document.getElementById('myname').length
also eine 0 rein, wird das erste Listenelement überschrieben.
Ist doch ganz einfach, oder?