views:

262

answers:

2

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"&gt;
<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?

A: 

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>
Mtblewis
A: 

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.

powtac