スクロールバーにスライダーが表示されているか(JavaScript) | のん気に根気の夢芽味餡

スクロールバーにスライダーが表示されているか(JavaScript)

スクロールバーが表示されるかどうか、ではなく、
JavaScriptで「スクロールが可能な状態なのか」を判断したかった。
つまり、「スライダーが表示されているか」が欲しい。

そんなプロパティはない(と思う)ので色々と調べてみたんだけど、出てくる情報は「スクロールバーが表示されているか」ばかりで一向に見つからない。
検索の仕方が悪かったのか……すっごい悩んだ末、全然別のところで偶然やり方を知ったので、ここに書いておく。


<html>
  <head>
    <script type="text/javascript">
    <!--
        function check() {
          var cHeight = document.getElementById("sc").clientHeight;
          var sHeight = document.getElementById("sc").scrollHeight;
          alert("スライダーが表示されている:"+((sHeight-cHeight)>0));
        }
    //-->
    </script>
    </head>
    <body>
        <form name="tform">
            <div id="sc" style="overflow-y:scroll; width: 200px; height: 50%;">
                スライダー表示の確認。


                スタイルシート属性 overflow は、領域をはみ出した要素の扱いを指定。
                今回は縦スクロールチェックなので「overflow-y」属性を使ってます。
                「scroll」は常に表示、「auto」だとはみ出した時に表示されるようになります。
            </div>
            <input type="button" name="test" value="test" onclick="check()">
        </form>
    </body>
</html>


htmlの中身そのまま書きました。ボタン押せば、スクロール領域にスライダーが表示されてるかどうかを表示します。
※スクロール領域の高さは画面サイズに合わせて変更される

clientHeight は画面に表示される領域、scrollHeight は実際の中身。
scrollHeight 側が大きい=スクロールしないと表示されない=スライダーが表示されている、って感じの判断になります。