WebページにSELECT
要素があり、一番下までスクロールしてロードしたいと思います。ほとんどのブラウザでは、これを行うことができます:
myselect.scrollTop = myselect.scrollHeight;
範囲外scrollHeight
ですが、ブラウザはそれを理解し、適切に制限します。GoogleChromeを除く。バグレポートを提出することはできますが、それでは当面の問題は解決しません。だから私はこれを試しました:
myselect.scrollTop = myselect.scrollHeight - myselect.clientHeight;
しかし、それはあまりにも多くを差し引きました-要素の下部の下にアイテムがありました。私も引き算を試みoffsetHeight
ましたが、それは少しひどいものでした。
scrollTop
Chromeで動作するように、適切にインバウンドであるを適切に計算するブラウザに依存しない方法を知っている人はいますか?
ところで、私はstackoverflowでこの質問を見つけました: 要素のScrollTopを設定するためのクロスブラウザメソッド?。おそらくそれはDIVに対しては機能しますが、SELECT要素に対しては機能しないかChromeでは機能しません。
ありがとう!
更新:問題を示すHTMLページは次のとおりです。
<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>
これをChromeで表示すると、最後のオプション「lastone」はほとんど下部が切り取られています。class="fields9"
しかし、属性を削除すると、問題は解決します。