Alternative "scrollIntoView"

X

xevi.matavacas

Hi friends,

I found a problem while "scrolling into view" and to overcome this I
made a function to simulate javascript's function. I would like to
share it and here it is:

function alternativeScrollIntoView(parentDiv,elementIntoDiv)
{
var principal =parentDiv;
principal.scrollTop = 0;
var rects = principal.getClientRects()[0];
var topFinal = rects.top;
var bottomFinal = rects.bottom;
var bottomActual = elementIntoDiv.getClientRects()[0].bottom;
if (bottomActual == 0)
{
return;
}
while(bottomActual>bottomFinal||bottomActual<topFinal)
{
var direction="down";
if(bottomActual<topFinal) direction="up";
principal.doScroll(direction);
bottomActual=elementIntoDiv.getClientRects()[0].bottom;
}
}

It worked in my enviroment, i hope it could be useful for you too.

Xevi.

PS: It was done for IE. I didn't test it in other enviroments.
 
R

RobG

Hi friends,

I found a problem while "scrolling into view" and to overcome this I
made a function to simulate javascript's function. I would like to
share it and here it is:

What version of IE supports getClientRects() and doScroll() but not
scrollIntoView()? Doesn't scrollIntoView() go back to IE 4 and the
other two to IE 5?


[...]
 
X

xevi.matavacas

All of these functions worked on IE5.5 but the result was not always
the expected. Sometimes the element didn't fit into the view. That's
why we made this function to overcome this.
 
R

RobG

All of these functions worked on IE5.5 but the result was not always
the expected. Sometimes the element didn't fit into the view. That's
why we made this function to overcome this.

A more cross-browser function could use scrollIntoView first, then
adjust the position using your function if the features are supported
(of course scrollIntoView should be feature tested too).

That may also provide some extra speed/efficiency on IE where the
element needs to scroll a long way.
 
X

xevi.matavacas

You're right, I agree that this is the best option. Better use first
what the enviroment provides and if necessary use the function I made.

Thanks a lot.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top