git.asbjorn.biz
/
jquery.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
IE 9 preserves the case of the Alpha filter - maintain it in the test as well.
[jquery.git]
/
src
/
offset.js
diff --git
a/src/offset.js
b/src/offset.js
index
c472f98
..
bbb19c2
100644
(file)
--- a/
src/offset.js
+++ b/
src/offset.js
@@
-1,8
+1,11
@@
(function( jQuery ) {
(function( jQuery ) {
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
if ( "getBoundingClientRect" in document.documentElement ) {
jQuery.fn.offset = function( options ) {
if ( "getBoundingClientRect" in document.documentElement ) {
jQuery.fn.offset = function( options ) {
- var elem = this[0];
+ var elem = this[0], box;
if ( options ) {
return this.each(function( i ) {
if ( options ) {
return this.each(function( i ) {
@@
-18,8
+21,14
@@
if ( "getBoundingClientRect" in document.documentElement ) {
return jQuery.offset.bodyOffset( elem );
}
return jQuery.offset.bodyOffset( elem );
}
- var box = elem.getBoundingClientRect(),
- doc = elem.ownerDocument,
+ try {
+ box = elem.getBoundingClientRect();
+
+ } catch(e) {
+ return { top: 0, left: 0 };
+ }
+
+ var doc = elem.ownerDocument,
body = doc.body,
docElem = doc.documentElement,
win = getWindow(doc),
body = doc.body,
docElem = doc.documentElement,
win = getWindow(doc),
@@
-72,7
+81,7
@@
if ( "getBoundingClientRect" in document.documentElement ) {
top += elem.offsetTop;
left += elem.offsetLeft;
top += elem.offsetTop;
left += elem.offsetLeft;
- if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
top += parseFloat( computedStyle.borderTopWidth ) || 0;
left += parseFloat( computedStyle.borderLeftWidth ) || 0;
}
top += parseFloat( computedStyle.borderTopWidth ) || 0;
left += parseFloat( computedStyle.borderLeftWidth ) || 0;
}
@@
-207,7
+216,7
@@
jQuery.fn.extend({
// Get correct offsets
offset = this.offset(),
// Get correct offsets
offset = this.offset(),
- parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
// Subtract element margins
// note: when an element has margin: auto the offsetLeft and marginLeft
// Subtract element margins
// note: when an element has margin: auto the offsetLeft and marginLeft
@@
-229,7
+238,7
@@
jQuery.fn.extend({
offsetParent: function() {
return this.map(function() {
var offsetParent = this.offsetParent || document.body;
offsetParent: function() {
return this.map(function() {
var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
offsetParent = offsetParent.offsetParent;
}
return offsetParent;
offsetParent = offsetParent.offsetParent;
}
return offsetParent;
@@
-277,7
+286,7
@@
jQuery.each( ["Left", "Top"], function( i, name ) {
});
function getWindow( elem ) {
});
function getWindow( elem ) {
- return ("scrollTo" in elem && elem.document) ?
+ return jQuery.isWindow( elem ) ?
elem :
elem.nodeType === 9 ?
elem.defaultView || elem.parentWindow :
elem :
elem.nodeType === 9 ?
elem.defaultView || elem.parentWindow :