Bug Tracker

Ticket #5453 (closed bug: invalid)

Opened 5 years ago

Last modified 3 years ago

Unspecified error when using JQuery with update panel

Reported by: rishabhm Owned by:
Priority: major Milestone: 1.4
Component: dimensions Version: 1.3.2
Keywords: Cc:
Blocking: Blocked by:

Description

When using jquery 1.3.2version, we get "unspecified error" when some thing is updated through ajax in update panel.

Error point to this line of code in the jquery.1.3.2.min.js file. var G=this[0].getBoundingClientRect();

After using the fix provided in "Ticket #4918" for JQuery UI Development it works fine. But for that we have to redefine the "jQuery.fn.offset" function in seperate js file.

Can this fix be incorporated in the main JQuery 1.3.2.min.js file. This will be very helpfull.

Change History

comment:1 Changed 5 years ago by rishabhm

Below is the fix for redefining the "jQuery.fn.offset" function.

Originally By Brandon Aaron, part of the Dimension Plugin  http://jquery.com/plugins/project/dimensions jQuery.fn.offset = function() {

/ <summary> / Gets the current offset of the first matched element relative to the viewport. / </summary> / <returns type="Object">An object with two Integer properties, 'top' and 'left'.</returns>

var left = 0, top = 0, elem = this[0], results;

if (elem) with (jQuery.browser) {

var parent = elem.parentNode,

offsetChild = elem, offsetParent = IESafeOffsetParent(elem), doc = elem.ownerDocument, safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent), css = jQuery.curCSS, fixed = css(elem, "position") == "fixed";

Use getBoundingClientRect if available if (false && elem.getBoundingClientRect) {

var box = elem.getBoundingClientRect();

Add the document scroll offsets add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),

box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));

IE adds the HTML element's border, by default it is medium which is 2px IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; } IE 7 standards mode, the border is always 2px This border/offset is typically represented by the clientLeft and clientTop properties However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS Therefore this method will be off by 2px in IE while in quirksmode add(-doc.documentElement.clientLeft, -doc.documentElement.clientTop);

Otherwise loop through the offsetParents and parentNodes

} else {

Initial element offsets add(elem.offsetLeft, elem.offsetTop);

Get parent offsets while (offsetParent) {

Add offsetParent offsets add(offsetParent.offsetLeft, offsetParent.offsetTop);

Mozilla and Safari > 2 does not include the border on offset parents However Mozilla adds the border for table or table cells

if (mozilla && !/t(able|d|h)$/i.test(offsetParent.tagName)
safari && !safari2)

border(offsetParent);

Add the document scroll offsets if position is fixed on any offsetParent if (!fixed && css(offsetParent, "position") == "fixed")

fixed = true;

Set offsetChild to previous offsetParent unless it is the body element offsetChild = /body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent; Get next offsetParent offsetParent = offsetParent.offsetParent;

}

Get parent scroll offsets while (parent && parent.tagName && !/body|html$/i.test(parent.tagName)) {

Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug if (!/inline|table.*$/i.test(css(parent, "display"))) Subtract parent scroll offsets

add(-parent.scrollLeft, -parent.scrollTop);

Mozilla does not add the border for a parent that has overflow != visible if (mozilla && css(parent, "overflow") != "visible")

border(parent);

Get next parent parent = parent.parentNode;

}

Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild Mozilla doubles body offsets with a non-absolutely positioned offsetChild

if ((safari2 && (fixed
css(offsetChild, "position") == "absolute"))

(mozilla && css(offsetChild, "position") != "absolute"))

add(-doc.body.offsetLeft, -doc.body.offsetTop);

Add the document scroll offsets if position is fixed if (fixed)

add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),

Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));

}

Return an object with top and left properties results = { top: top, left: left };

}

function border(elem) {

/ <summary> / This method is internal. / </summary> / <private /> add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true));

}

function add(l, t) {

/ <summary> / This method is internal. / </summary> / <private />

left += parseInt(l, 10) top += parseInt(t, 10)
0;
0;

}

return results;

};

function IESafeOffsetParent(elem) {

try {

return elem.offsetParent;

} catch (e) {

return document.body;

}

}

comment:2 Changed 5 years ago by john

  • Priority changed from critical to major
  • Resolution set to invalid
  • Status changed from new to closed
  • Component changed from ajax to dimensions

Umm - this is a really old version of the Dimensions plugin? We're definitely going to need a test case to work off of.

Note: See TracTickets for help on using tickets.