#261 new

Dragdrop not scrolling horizontally when vertical scroll is 0

Reported by Tico | December 1st, 2009 @ 11:49 PM

I have a basic situation where I'm using drag/drop to order items along the x-axis (left/right). I have a bottom (horizontal) scroll bar, but not a right-side (vertical) scroll bar. When dragging items to the right edge, the screen wiggles like it's trying to scroll over, but it doesn't scroll more than a few pixels.

I tracked the problem down to the _getWindowScroll function on line 546 of dragdrop.js v1.8.3

The current implementation for getting the window scroll offsets is:

  if (w.document.documentElement && documentElement.scrollTop) {
    T = documentElement.scrollTop;
    L = documentElement.scrollLeft;
  } else if (w.document.body) {
    T = body.scrollTop;
    L = body.scrollLeft;

In my case, documentElement.scrollTop happens to be 0, which evaluates to false, so execution goes into the else-case. Even though documentElement.scrollLeft has the correct non-zero scroll value, I end up with the value from body.scrollLeft as the left scroll, which is 0.

I fixed the problem by changing the if check to read:

  if (w.document.documentElement && (documentElement.scrollTop || documentElement.scrollLeft)) {

I doubt it matters, but I'm using Windows XP, Firefox 3.5.5, and Prototype 1.6.1

Comments and changes to this ticket

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

script.aculo.us is an open-source JavaScript framework for visual effects and interface behaviours.
<br/><b>Source available from github</b>
The Git repository resides at:
<a href="http://github.com/madrobby/scriptaculous">http://github.com/madrobby/scriptaculous</a>
<br/>Check out the current development trunk with:
<code>git clone git://github.com/madrobby/scriptaculous.git</code>
<br/>As <b>script.aculo.us 1.xx is feature-frozen</b>, this development trunk is for <b>bugfixes only</b>.
<br/>New development should happen only for
<b>script.aculo.us 2</b>.
<br/><b>Creating a bug report</b>
When creating a bug report, be sure to include as much relevant information as possible. Post a an example that shows off the problem. Preferably, <b>alter the unit tests</b> and show through either changed or added tests how the expected behavior is not occuring.

People watching this ticket