为什么不使用“doScroll”?在 IE8 中工作?

发布于 2024-08-11 05:35:37 字数 761 浏览 3 评论 0原文

微软在 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 是必要的。)

有什么想法吗?

Is "doScroll" still supported by Microsoft in IE8? I can't get it to work at all.

Here's a test page:

<!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>

The "Down" and "Up" buttons work fine in IE6 and IE7, as well as IE8 in "Compatibility View". But they have no effect in IE8 Standard View. (The DOCTYPE is necessary.)

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲歌长辞 2024-08-18 05:35:37

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

I don't know if the doScroll() method exists anymore, but you should be safe across browsers getting the clientHeight and scrollHeight values. I put your js into a couple of functions to make it easier to work with.

<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>
甜宝宝 2024-08-18 05:35:37

它应该在 IE8 中工作,请参阅 MSDN 文档

但该页面上有一些注释:

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

由我突出显示。

It should work in IE8, see the MSDN documentation.

But there are some remarks on that page:

When the content of an element changes
and causes scroll bars to display,
the doScroll method might not work correctly immediately following the
content update. When this happens, you
can use the setTimeout method to
enable the browser to recognize the
dynamic changes that affect scrolling.

Highlight by me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文