代码之家  ›  专栏  ›  技术社区  ›  abjennings

为什么“doscoroll”在IE8中不起作用?

  •  1
  • abjennings  · 技术社区  · 15 年前

    微软在IE8中还支持“doscoroll”吗?我根本不能让它工作。

    以下是测试页面:

    <!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 回复  |  直到 15 年前
        1
  •  0
  •   Mtblewis    15 年前

    我不知道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>
    
        2
  •  0
  •   powtac    15 年前

    它应该在IE8中工作,参见 MSDN documentation .

    但这一页有一些评论:

    当元素的内容发生变化时 doscoroll方法可能无法正常工作 内容更新。当这种情况发生时,你 可以使用setTimeout方法来 使浏览器能够识别 影响滚动的动态更改。

    由我来突出。