Open Bug 429997 Opened 16 years ago Updated 2 years ago

onscroll event is not sent often enough in fx3

Categories

(Core :: DOM: Events, defect, P5)

x86
Windows XP
defect

Tracking

()

UNCONFIRMED

People

(Reporter: bugzilla, Unassigned)

References

()

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Build Identifier: 

In fx2.* the URL above works not too well because of the use the big transparent PNGs. However, in fx3(b5) it works even less well because the onscroll handler, that is responsible of moving the background image, is not called often enough.

Reproducible: Always

Steps to Reproduce:
Open the URL above, wait for the page to complete loading and then try to scroll. 
Actual Results:  
In fx2, the background scrolls with a noticeable (albeit little) lag. In fx3, it has a huge lag (in practice, it seems to wait until the mouse stopped)-

Expected Results:  
In fx3, it should behave better than fx2 (i.e. should have a smaller lag). From this point of view, this may be regarded as a regression.
Sorry, forgot to add the URL and UA (Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5)
Still true in fx3.0.3
Mozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Summary: onscroll event is not sent often enough in fx3b5 → onscroll event is not sent often enough in fx3
This problem is still present in Fx3.5.x. I suspect this is still true on Trunk, I'll try shortly to verify it.

A page that show the problem: http://www.aequimast.com/en/ricerca?Usato&Nuovo&p=all
I have this same problem with my site, someone tried to troubleshoot my problem for me and this was their response: 

------------------

I haven't checked this in Safari, but it looks like Chrome and Firefox implement the onscroll event differently. Basically, Chrome emits many more onscroll events than Firefox does, and most importantly, it emits an event every time the page is redrawn while scrolling. Firefox, on the other hand, boasts a 'smooth scrolling' feature. Smooth scrolling means rendering many brief, incremental frames while scrolling — but the onscroll does not fire every time one of these frames is drawn to the screen. Rather, the event is only fired during pauses in the movement of the scrollbar, when there is no incremental movement to render. This means that in Firefox, during the act of scrolling, many small changes in scroll-height are rendered to the screen before your handler is called, and so the movement of the different layers will appear to be jerky and out of sync.

I have not yet found a solution to this problem. My first impulse was calling setInterval() to check the scrollY property of the page at a high frequency, and call your handler when its value changes, regardless of whether an onscroll event has occurred yet. Unfortunately, it looks like Firefox also does not update the scrollY property smoothly during scrolling. In other words, there appears to be no way of testing whether or not a visible scroll has occurred until the actual onscroll event has fired, and by that point too much scrolling may already have occurred to make the parallax effect seem smooth.

------------------

So, no work around as of yet.  Please fix this! Parallax scrolling is such a neat effect.
Please address this. For web application development there is a huge difference
between the scroll event firing every redraw versus scrollstart and scrollend.
https://bugzilla.mozilla.org/show_bug.cgi?id=1472046

Move all DOM bugs that haven’t been updated in more than 3 years and has no one currently assigned to P5.

If you have questions, please contact :mdaly.
Priority: -- → P5
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.