Bug Tracker

Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#7193 closed bug (fixed)

$.fn.animate cannot "start" from any value less than -10000

Reported by: [email protected] Owned by: john
Priority: low Milestone: 1.5
Component: effects Version: 1.4.3
Keywords: Cc: john
Blocked by: Blocking:

Description

On line 6347: return r && r > -10000 ? r : 0;

Essentially, the default start value of an animation can be as low as -10000, otherwise it resets to 0.

I'm using a very long scrollable area (about 15000px), when I slide from -9000px to near the end (say -14000px) it resets to 0 and animated from 0->-14000px, rather than -9000px->-14000px.

Is there a reason for this arbitrary limit?

Change History (28)

comment:1 Changed 12 years ago by [email protected]

JSfiddle example... but jsfiddle doesn't have 1.4.3rc

Basically, you should never see red again after is scrolls offscreen the first time:

http://jsfiddle.net/uMeHf/1/

comment:2 Changed 12 years ago by snover

Cc: john added
Component: unfiledeffects
Milestone: 1.4.31.next
Priority: undecidedlow
Status: newopen

Good question.

comment:3 Changed 12 years ago by jitter

This isn't much of a help but might serve as a starting point.

The limit was introduced in August 2006 Relevant Commit to apparently fix something in Opera (at that time approx. Opera 9.00 was the current version)

For me your test-case doesn't fail but thats because jQuery 1.4.2 is used.

Here I provide the same test-case again but this time with jQuery 1.4.3rc2 used and the animation fails

http://jsbin.com/ewulu/3 (source view: http://jsbin.com/ewulu/3/edit)

Last edited 12 years ago by jitter (previous) (diff)

comment:4 Changed 12 years ago by snover

Milestone: 1.4.41.4.5

Retargeting due to severity of regressions in 1.4.3.

comment:5 Changed 12 years ago by dmethvin

#7287 is a duplicate of this ticket.

comment:6 Changed 12 years ago by john

Milestone: 1.4.51.4.4
Owner: set to john
Status: openassigned

comment:7 Changed 12 years ago by snover

Milestone: 1.4.41.4.5

Retargeting to next minor release.

comment:8 Changed 12 years ago by Rick Waldron

#7403 is a duplicate of this ticket.

comment:9 Changed 12 years ago by addyosmani

#7450 is a duplicate of this ticket.

comment:10 Changed 12 years ago by [email protected]

Here's a heuristic fix for the bug.

Change line 6624 from:

		return r && r > -10000 ? r : 0;

to:

		return r;

Tested for this particular problem in FF 3.6.12, Chrome 7.0.517.44, IE 8.0.7600.16385, Safari 5.0.2 and Opera 10.63.3516. Works like expected.

comment:11 Changed 12 years ago by anonymous

Sorry, I'm totally dumb, haven't noticed it's been found already. You can remove my comments.

comment:12 Changed 12 years ago by jitter

#7532 is a duplicate of this ticket.

comment:13 Changed 12 years ago by [email protected]

Just another test case to fiddle with: http://jsfiddle.net/mwJkJ/

comment:14 Changed 12 years ago by snover

3rd party pull request

comment:15 Changed 12 years ago by anonymous

I've implemented

return r /*&& r > -10000 ? r : 0*/;

and look forward to a fix in a future release

comment:16 Changed 12 years ago by Rick Waldron

#7625 is a duplicate of this ticket.

comment:17 in reply to:  10 Changed 12 years ago by [email protected]

Replying to [email protected]:

Change line 6624 from:

		return r && r > -10000 ? r : 0;

to:

		return r;

Tested for this particular problem in FF 3.6.12, Chrome 7.0.517.44, IE 8.0.7600.16385, Safari 5.0.2 and Opera 10.63.3516. Works like expected.

I suggest reducing the amount of changed code by only removing the cause of the problem and not the additional validity check by using the following code:

return r ? r : 0;

or

return r || 0;

The check if r is true-ish is in no way related to this bug and should be kept in place in case it breaks something else.

comment:18 Changed 12 years ago by jitter

#7657 is a duplicate of this ticket.

comment:19 Changed 12 years ago by jitter

#7760 is a duplicate of this ticket.

comment:20 Changed 12 years ago by jitter

#7801 is a duplicate of this ticket.

comment:21 Changed 12 years ago by anonymous

Great, got it fixed as daniel.baulig and lazahu suggested, thanks. It kept me up whole night yesterday

comment:22 Changed 12 years ago by anonymous

Hacking the core as described unfortunately is no solution for distributed packages.

This bug doesn't even show up in the change log for jQuery 1.5, does that mean it hasn't been fixed (yet?) in the future version? Some details from one of the developers would be greatly appreciated!

comment:23 Changed 12 years ago by dmethvin

#7859 is a duplicate of this ticket.

comment:24 Changed 12 years ago by ajpiano

To which jQuery 1.5 changelog do you refer? There is not an official jQuery 1.5 changelog yet, because there is no jQuery 1.5 yet. If you're referring to the changelog in the recent community updates post, that is just a log of changes that have happened thus far, it is not a complete changelog.

When the bug is fixed, this ticket will be closed. It is certainly something we are planning to address for 1.5 - otherwise we'll be getting dupes on this issue until the end of time. :)

Last edited 12 years ago by ajpiano (previous) (diff)

comment:25 Changed 12 years ago by Colin Snover

Resolution: fixed
Status: assignedclosed

Remove patch for very early versions of Opera 9 that made it impossible to animate values smaller than -10000. Fixes #7193. Thanks to igorw for initial patch & test case.

Changeset: 4eeae8b0bc789ad525e98568cffb37b04b27ae84

comment:26 Changed 12 years ago by jitter

Milestone: 1.4.51.5

comment:27 Changed 12 years ago by jitter

#7935 is a duplicate of this ticket.

comment:28 Changed 12 years ago by jitter

#8341 is a duplicate of this ticket.

Note: See TracTickets for help on using tickets.