2009-04-02 8 views
3

Das folgende Javascript zum Ändern der Größe einer Auswahlliste bricht in Google Chrome. Es funktioniert, wenn Sie in das Feld einsteigen, aber wenn Sie darauf klicken, wird "Aw, Snap!" Fehlerseite.Google Chrome bricht, wenn onfocus setzt wählen Sie die Größe

<select onfocus="this.setAttribute('size', 3);"> 
<option>selectList with onfocus</option> 
<option>2</option> 
<option>3</option> 
<option>4</option> 
</select> 

Funktioniert in FF und IE. Es ist eine Art von Konflikt zwischen onfocus (es gibt keine Probleme, wenn ich es onClick implementiere) und die Größe Attribut einstellen. Mir wurde gesagt, dass es in Safari auch bricht.

Jede Hilfe, Ideen oder Workarounds werden sehr geschätzt.

(PS Yeh Ich weiß es nicht sehr schön Form ist eine Auswahlliste, um die Größe, aber es ist das, was der Chef/Kunde will)

Antwort

6

Ändern Sie die Zeile mit der Auswahl dazu:

<select onfocus="var that = this; setTimeout(function() {that.setAttribute('size', 3);}, 0);"> 

Es funktioniert für mich in Chrome. Ich habe es nicht in Safari versucht, aber ich vermute, dass es auch funktionieren wird. Im Grunde genommen umgehen wir hier nur den Aufruf-Stack mit setTimeout, der den Fehler in Webkit zu umgehen scheint.

+0

Vielen Dank! Funktioniert perfekt: D –