Ticket #4631 (closed bug: fixed)

Opened 5 years ago

Last modified 5 years ago

Draggable: Fixed positions include wrong scroll offset in Safari 4

Reported by: attaboy Owned by:
Priority: critical Milestone: 1.8
Component: ui.draggable Version: 1.7.2
Keywords: draggable fixed position scroll offset safari Cc:
Blocking: Blocked by:

Description

This re-opens bug #4142.

Safari 4 fixed the bug that this fix worked around, and as a result, fixed position scroll offsets are now wrong in Safari 4. (Ah, the joys of browsers.)

I have devised a simple patch which checks the Webkit version number before using the old workaround. Webkit 526 and higher is equivalent to Safari 4.

Basically, for tests like:

$.browser.safari && this.cssPosition == 'fixed'

The code would become:

$.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed'

Attachments

draggable-4631.diff Download (4.5 KB) - added by alexch 5 years ago.
revised patch for draggable.js

Change History

comment:1 Changed 5 years ago by joern.zaefferer

  • Milestone changed from TBD to 1.8

comment:2 Changed 5 years ago by scott.gonzalez

We should remove the browser check and actually do feature detection.

comment:3 follow-up: ↓ 8 Changed 5 years ago by joern.zaefferer

Whats the feature here, and how can we detect it?

comment:4 Changed 5 years ago by paul

comment:5 Changed 5 years ago by alexch

That URL has two "Fixed" elements inside scrolling divs but neither one is even visible on the screen in Safari 4! No wonder you can't reproduce it! :-)

Just make a position:fixed div on a page with a bunch of other items halfway down a page, shrink the window so the scrollbar appears on the main window, scroll down a bit, then start dragging the div. You'll see it jump around spastically.

comment:6 Changed 5 years ago by alexch

I patched my copy and did some DRYing out of the relevant code as well. It's much clearer now that 4 nearly-identical nested-ternary-operator statements are replaced with some function calls.

Changed 5 years ago by alexch

revised patch for draggable.js

comment:7 Changed 5 years ago by scott.gonzalez

  • Status changed from new to closed
  • Resolution set to fixed

Fixed in r3778. Now with even more browser detection! :-(

comment:8 in reply to: ↑ 3 Changed 5 years ago by scott.gonzalez

Replying to joern.zaefferer:

Whats the feature here, and how can we detect it?

The feature is whether or not we can determine the offset correctly for fixed position elements. You can create a fixed position element, position it, get the offset and determine if the value is correct.

Note: See TracTickets for help on using tickets.