Skip to main content

Bug Tracker

Side navigation

#5453 closed bug (invalid)

Opened November 05, 2009 06:17AM UTC

Closed November 07, 2009 02:45PM UTC

Last modified March 15, 2012 11:40AM UTC

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:
Blocked by: Blocking:
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.

Attachments (0)
Change History (2)

Changed November 05, 2009 06:20AM UTC by rishabhm comment:1

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) || 0;

top += parseInt(t, 10) || 0;

}

return results;

};

function IESafeOffsetParent(elem) {

try {

return elem.offsetParent;

}

catch (e) {

return document.body;

}

}

Changed November 07, 2009 02:45PM UTC by john comment:2

component: ajaxdimensions
priority: criticalmajor
resolution: → invalid
status: newclosed

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