Search and Top Navigation
#4918 closed bug (notabug)
Opened October 19, 2009 08:30AM UTC
Closed October 21, 2009 01:12PM UTC
Last modified October 11, 2012 09:15PM UTC
undefined error because of UI's droppable
Reported by: | nicolas | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | |
Component: | ui.core | Version: | 1.7.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Hi,
we are currently having somewhat of a big issue when using UI's draggable and droppable features.
We have DIV's on the page that are .resizable() and .draggable(). This has always worked fine (we are able to move and resize all DIV's on the page).
Lately, we have added to some of those DIV's the .droppable() feature. Since then, bugs happen.
At initial load, everything is fine. It is possible to move and resize all DIV's, and those having the droppable() property are effectively used as drop-zones (in addition to being resizable and draggable).
After a postback, in which we alter the control tree and do some heavy AJAX duty, when trying to move a DIV that has the droppable() property, we get an unspecified error on the following line of code:
var G=this[0].getBoundingClientRect()
That is located in jquery-1.3.2.js, under the Sizzle CSS Selector Engine.
We tried going back to jquery-1.6.2.js, and in that case, we get the unspecified error on another line:
offsetParent = elem.offsetParent
The error only happens after some AJAX is done, and only when trying to drag a DIV that has the droppable() property set. Trying to move any other DIV will not cause any error. Pushing F5 after we got the error, and then after trying to move a DIV that is set as droppable(), will not cause any error until heavy AJAX happens again.
There is something I have noticed, not sure if this can help, but this proves something is wrong somewhere in the CSS. When doing the AJAX thing that then causes the error to happen, I notice a CSS change on the DIV's that are set as droppable. The difference appears to be some transparency issue. See an example here:
before AJAX: http://img8.imageshack.us/i/beforelg.png/
after AJAX: http://img42.imageshack.us/i/afterd.png/
Look at the right and bottom sides of the chart. Please note though, that this also happens when the droppable() is not set (thus no error happens at all), so it may totally unrelated. Also, this is not very important and does not require an immediate fix - I'm just showing this in case it may has something to do with our issue.
I have done some research and found that other people have similar problems, although it did not help us find a solution:
We are using IE8 (same behavior with IE8 and IE7 compatibility view) with Vista x64.
Unfortunately, the application is really complex and AJAX heavy, so it is near to impossible to create a sample project reproducing the issue.
It also won't run in Firefox or anything else than IE (8, for that matter).
Any help is appreciated.
Thanks,
Nicolas
Attachments (0)
Change History (7)
Changed October 19, 2009 09:10AM UTC by comment:1
Changed October 21, 2009 01:12PM UTC by comment:2
resolution: | → invalid |
---|---|
status: | new → closed |
Bugs in .offset() belong in jQuery's bug tracker.
Changed November 12, 2009 09:37AM UTC by comment:3
what is this fix? HELP!!!
Changed November 12, 2009 09:37AM UTC by comment:4
Replying to [comment:3 Sensor]:
Could you please tell me how to patch this this fix? HELP!!!
Changed November 12, 2009 09:37AM UTC by comment:5
Replying to [comment:4 Sensor]:
Replying to [comment:3 Sensor]: > Could you please tell me how to patch this fix? HELP!!!
Changed December 17, 2009 02:09AM UTC by comment:6
I have the same issue. An ASP.NET AJAX call replaces #dropContainer, but $.ui.ddmanager.droppables.default continues to hold on to the old instances of #dropContainer. So after two calls back to the server, I end up with three instances of #dropContainer in $.ui.ddmanager.droppables.default, only one of which actually exists in the document tree.
Then when a drag starts, prepareOffsets() gets called, which results in getBoundingClientRect() being called against elements that have no parent element. In IE, this causes an error.
It seems unlikely to me that $.ui.ddmanager was intended to hold onto dead elements. In that case, I think this indicates that there are bugs in both libraries. The corresponding ticket for JQuery's .offset() issue is here for anyone who is interested: http://dev.jquery.com/ticket/4996
Changed October 11, 2012 09:15PM UTC by comment:7
milestone: | TBD |
---|
Milestone TBD deleted
Hi,
this was fixed thanks to using this code, apparently redefining the offset function to make it work under IE:
Any chance you can fix that in a future release of jQuery so that we can get rid of that fix?
Thanks