Commit cf672a2e authored by John Resig's avatar John Resig

Make sure that .offset() doesn't fail against disconnected DOM nodes. Fixes #4996.

parent 7be11207
......@@ -5,7 +5,7 @@ var rtable = /^t(?:able|d|h)$/i,
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 ) {
......@@ -21,8 +21,14 @@ if ( "getBoundingClientRect" in document.documentElement ) {
return jQuery.offset.bodyOffset( elem );
}
var box = elem.getBoundingClientRect(),
doc = elem.ownerDocument,
try {
box = elem.getBoundingClientRect();
} catch(e) {
box = { top: elem.offsetTop, left: elem.offsetLeft };
}
var doc = elem.ownerDocument,
body = doc.body,
docElem = doc.documentElement,
win = getWindow(doc),
......
module("offset");
test("disconnected node", function() {
expect(2);
var result = jQuery( document.createElement("div") ).offset();
equals( result.top, 0, "Check top" );
equals( result.left, 0, "Check left" );
});
var supportsScroll = false;
testoffset("absolute"/* in iframe */, function($, iframe) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment