Почему «doScroll» не работает в IE8? - PullRequest
1 голос
/ 18 ноября 2009

«DoScroll» все еще поддерживается Microsoft в IE8? Я не могу заставить его работать вообще.

Вот тестовая страница:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
  <body>
    <div id="a" style="overflow:auto; width:300px; height:300px; border:1px solid black;">
      <div style="width:200px; height:500px; background:blue;">
      </div>
    </div>
    <button onclick="document.getElementById('a').doScroll('scrollbarDown')">Down</button>
    <button onclick="document.getElementById('a').doScroll('scrollbarUp')">Up</button>
  </body>
</html>

Кнопки «Вниз» и «Вверх» прекрасно работают в IE6 и IE7, а также в IE8 в «режиме совместимости». Но они не действуют в IE8 Standard View. (DOCTYPE необходим.)

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2009

Должно работать в IE8, см. Документацию MSDN .

Но на этой странице есть несколько замечаний:

Когда изменяется содержимое элемента и вызывает полосы прокрутки для отображения, метод doScroll может работать некорректно сразу после обновление контента. Когда это произойдет, вы можно использовать метод setTimeout для включить браузер для распознавания динамические изменения, влияющие на прокрутку.

Выделите мной.

0 голосов
/ 18 ноября 2009

Я не знаю, существует ли метод doScroll (), но вы должны быть в безопасности во всех браузерах, получая значения clientHeight и scrollHeight. Я поместил ваши js в несколько функций, чтобы было легче работать с ними.

<script type="text/javascript">
    function scrollDown(){
        var myDiv = document.getElementById('a');
        myDiv.scrollTop = myDiv.scrollHeight - myDiv.clientHeight;
    }
    function scrollUp(){
        var myDiv = document.getElementById('a');
        myDiv.scrollTop =  myDiv.clientHeight - myDiv.scrollHeight;
    }
</script>
<div id="a" style="overflow:auto; width:300px; height:300px; border:1px solid black;">
  <div style="width:200px; height:500px; background:blue;">
  </div>
</div>
<button onclick="scrollDown()">Down</button>
<button onclick="scrollUp()">Up</button>
...