为什么“doScroll”不能在IE8中运行?

时间:2009-11-18 19:53:40

标签: javascript internet-explorer-8 dhtml

微软在IE8中是否还支持“doScroll”?我根本无法工作。

这是一个测试页面:

<!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标准视图没有影响。 (DOCTYPE是必要的。)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不知道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>

答案 1 :(得分:0)

它应该在IE8中有效,请参阅MSDN documentation

但该页面上有一些评论:

  

当元素的内容发生变化时   并导致滚动条显示,    doScroll方法可能无法正常工作紧随其后   内容更新。当发生这种情况时,你   可以使用setTimeout方法   使浏览器能够识别   影响滚动的动态更改。

由我突出显示。