2 Stimmen

Javascript: Nicht-Popup SELECT Element in Chrome programmatisch nach unten scrollen

Ich habe eine SELECT Element in einer Webseite, und ich möchte, dass es nach unten gescrollt geladen wird. In den meisten Browsern kann ich das tun:

myselect.scrollTop = myselect.scrollHeight;

Obwohl scrollHeight ist, finden die Browser das heraus und schränken es entsprechend ein. Außer in Google Chrome. Ich könnte einen Fehlerbericht einreichen, aber das hilft mir bei meinem unmittelbaren Problem nicht weiter. Also habe ich dies versucht:

myselect.scrollTop = myselect.scrollHeight - myselect.clientHeight;

Aber das hat zu viel abgezogen - es gab Elemente unterhalb der Unterseite des Elements. Ich habe auch versucht zu subtrahieren offsetHeight aber das war noch etwas schlimmer.

Kennt jemand eine browserunabhängige Methode zur korrekten Berechnung der scrollTop die ordnungsgemäß in-bounds ist, so dass es mit Chrome funktionieren wird?

Übrigens, ich habe diese Frage auf Stackoverflow gefunden: Cross-Browser-Methode für die Einstellung ScrollTop eines Elements? . Vielleicht funktioniert das für DIVs, aber nicht für SELECT-Elemente und/oder nicht in Chrome.

Danke!

UPDATE: Hier ist eine HTML-Seite, die das Problem veranschaulicht:

<html>
<head>

<style type="text/css">
.fields9{font-size:15px;height: 180px; width:420px; overflow: auto; border:1px solid #2d2b2d;}
</style>

</head>
<body>

<select multiple="multiple" size="10" id="myselect" class="fields9">
<option>firstone</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>lastone</option>
</select>

<script type="text/javascript">

element=document.getElementById("myselect");
//element.scrollTop = element.scrollHeight;
element.scrollTop = element.scrollHeight - element.clientHeight;

</script>

</body>
</html>

Wenn ich dies in Chrome ansehe, ist die letzte Option "lastone" größtenteils von unten abgeschnitten. ABER, wenn ich die class="fields9" wird das Problem beseitigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X