3 testoffset("absolute", function( jQuery ) {
4 equals( jQuery('#absolute-1').offset().top, 1, "jQuery('#absolute-1').offset().top" );
5 equals( jQuery('#absolute-1').offset().left, 1, "jQuery('#absolute-1').offset().left" );
7 equals( jQuery('#absolute-1-1').offset().top, 5, "jQuery('#absolute-1-1').offset().top" );
8 equals( jQuery('#absolute-1-1').offset().left, 5, "jQuery('#absolute-1-1').offset().left" );
10 equals( jQuery('#absolute-1-1-1').offset().top, 9, "jQuery('#absolute-1-1-1').offset().top" );
11 equals( jQuery('#absolute-1-1-1').offset().left, 9, "jQuery('#absolute-1-1-1').offset().left" );
13 equals( jQuery('#absolute-2').offset().top, 20, "jQuery('#absolute-2').offset().top" );
14 equals( jQuery('#absolute-2').offset().left, 20, "jQuery('#absolute-2').offset().left" );
17 equals( jQuery('#absolute-1').position().top, 0, "jQuery('#absolute-1').position().top" );
18 equals( jQuery('#absolute-1').position().left, 0, "jQuery('#absolute-1').position().left" );
20 equals( jQuery('#absolute-1-1').position().top, 1, "jQuery('#absolute-1-1').position().top" );
21 equals( jQuery('#absolute-1-1').position().left, 1, "jQuery('#absolute-1-1').position().left" );
23 equals( jQuery('#absolute-1-1-1').position().top, 1, "jQuery('#absolute-1-1-1').position().top" );
24 equals( jQuery('#absolute-1-1-1').position().left, 1, "jQuery('#absolute-1-1-1').position().left" );
26 equals( jQuery('#absolute-2').position().top, 19, "jQuery('#absolute-2').position().top" );
27 equals( jQuery('#absolute-2').position().left, 19, "jQuery('#absolute-2').position().left" );
30 testoffset("relative", function( jQuery ) {
31 var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
33 // IE is collapsing the top margin of 1px
34 equals( jQuery('#relative-1').offset().top, ie ? 6 : 7, "jQuery('#relative-1').offset().top" );
35 equals( jQuery('#relative-1').offset().left, 7, "jQuery('#relative-1').offset().left" );
37 // IE is collapsing the top margin of 1px
38 equals( jQuery('#relative-1-1').offset().top, ie ? 13 : 15, "jQuery('#relative-1-1').offset().top" );
39 equals( jQuery('#relative-1-1').offset().left, 15, "jQuery('#relative-1-1').offset().left" );
41 // IE is collapsing the top margin of 1px
42 equals( jQuery('#relative-2').offset().top, ie ? 141 : 142, "jQuery('#relative-2').offset().top" );
43 equals( jQuery('#relative-2').offset().left, 27, "jQuery('#relative-2').offset().left" );
46 // IE is collapsing the top margin of 1px
47 equals( jQuery('#relative-1').position().top, ie ? 5 : 6, "jQuery('#relative-1').position().top" );
48 equals( jQuery('#relative-1').position().left, 6, "jQuery('#relative-1').position().left" );
50 // IE is collapsing the top margin of 1px
51 equals( jQuery('#relative-1-1').position().top, ie ? 4 : 5, "jQuery('#relative-1-1').position().top" );
52 equals( jQuery('#relative-1-1').position().left, 5, "jQuery('#relative-1-1').position().left" );
54 // IE is collapsing the top margin of 1px
55 equals( jQuery('#relative-2').position().top, ie ? 140 : 141, "jQuery('#relative-2').position().top" );
56 equals( jQuery('#relative-2').position().left, 26, "jQuery('#relative-2').position().left" );
59 testoffset("static", function( jQuery ) {
60 var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
62 // IE is collapsing the top margin of 1px
63 equals( jQuery('#static-1').offset().top, ie ? 6 : 7, "jQuery('#static-1').offset().top" );
64 equals( jQuery('#static-1').offset().left, 7, "jQuery('#static-1').offset().left" );
66 // IE is collapsing the top margin of 1px
67 equals( jQuery('#static-1-1').offset().top, ie ? 13 : 15, "jQuery('#static-1-1').offset().top" );
68 equals( jQuery('#static-1-1').offset().left, 15, "jQuery('#static-1-1').offset().left" );
70 // IE is collapsing the top margin of 1px
71 equals( jQuery('#static-1-1-1').offset().top, ie ? 20 : 23, "jQuery('#static-1-1-1').offset().top" );
72 equals( jQuery('#static-1-1-1').offset().left, 23, "jQuery('#static-1-1-1').offset().left" );
74 // IE is collapsing the top margin of 1px
75 equals( jQuery('#static-2').offset().top, ie ? 121 : 122, "jQuery('#static-2').offset().top" );
76 equals( jQuery('#static-2').offset().left, 7, "jQuery('#static-2').offset().left" );
79 // IE is collapsing the top margin of 1px
80 equals( jQuery('#static-1').position().top, ie ? 5 : 6, "jQuery('#static-1').position().top" );
81 equals( jQuery('#static-1').position().left, 6, "jQuery('#static-1').position().left" );
83 // IE is collapsing the top margin of 1px
84 equals( jQuery('#static-1-1').position().top, ie ? 12 : 14, "jQuery('#static-1-1').position().top" );
85 equals( jQuery('#static-1-1').position().left, 14, "jQuery('#static-1-1').position().left" );
87 // IE is collapsing the top margin of 1px
88 equals( jQuery('#static-1-1-1').position().top, ie ? 19 : 22, "jQuery('#static-1-1-1').position().top" );
89 equals( jQuery('#static-1-1-1').position().left, 22, "jQuery('#static-1-1-1').position().left" );
91 // IE is collapsing the top margin of 1px
92 equals( jQuery('#static-2').position().top, ie ? 120 : 121, "jQuery('#static-2').position().top" );
93 equals( jQuery('#static-2').position().left, 6, "jQuery('#static-2').position().left" );
96 if ( jQuery.offset.supportsFixedPosition ) {
97 testoffset("fixed", function( jQuery ) {
98 equals( jQuery('#fixed-1').offset().top, 1001, "jQuery('#fixed-1').offset().top" );
99 equals( jQuery('#fixed-1').offset().left, 1001, "jQuery('#fixed-1').offset().left" );
101 equals( jQuery('#fixed-2').offset().top, 1021, "jQuery('#fixed-2').offset().top" );
102 equals( jQuery('#fixed-2').offset().left, 1021, "jQuery('#fixed-2').offset().left" );
106 testoffset("table", function( jQuery ) {
107 var ie = jQuery.browser.msie;
109 equals( jQuery('#table-1').offset().top, 6, "jQuery('#table-1').offset().top" );
110 equals( jQuery('#table-1').offset().left, 6, "jQuery('#table-1').offset().left" );
112 equals( jQuery('#th-1').offset().top, 10, "jQuery('#th-1').offset().top" );
113 equals( jQuery('#th-1').offset().left, 10, "jQuery('#th-1').offset().left" );
115 // equals( jQuery('#th-2').offset().top, 10, "jQuery('#th-2').offset().top" );
116 // equals( jQuery('#th-2').offset().left, 116, "jQuery('#th-2').offset().left" );
118 // equals( jQuery('#th-3').offset().top, 10, "jQuery('#th-3').offset().top" );
119 // equals( jQuery('#th-3').offset().left, 222, "jQuery('#th-3').offset().left" );
121 // equals( jQuery('#td-1').offset().top, ie ? 116 : 112, "jQuery('#td-1').offset().top" );
122 // equals( jQuery('#td-1').offset().left, 10, "jQuery('#td-1').offset().left" );
124 // equals( jQuery('#td-2').offset().top, ie ? 116 : 112, "jQuery('#td-2').offset().top" );
125 // equals( jQuery('#td-2').offset().left, 116, "jQuery('#td-2').offset().left" );
127 // equals( jQuery('#td-3').offset().top, ie ? 116 : 112, "jQuery('#td-3').offset().top" );
128 // equals( jQuery('#td-3').offset().left, 222, "jQuery('#td-3').offset().left" );
131 testoffset("scroll", function( jQuery ) {
132 var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
134 // IE is collapsing the top margin of 1px
135 equals( jQuery('#scroll-1').offset().top, ie ? 6 : 7, "jQuery('#scroll-1').offset().top" );
136 equals( jQuery('#scroll-1').offset().left, 7, "jQuery('#scroll-1').offset().left" );
138 // IE is collapsing the top margin of 1px
139 equals( jQuery('#scroll-1-1').offset().top, ie ? 9 : 11, "jQuery('#scroll-1-1').offset().top" );
140 equals( jQuery('#scroll-1-1').offset().left, 11, "jQuery('#scroll-1-1').offset().left" );
143 testoffset("body", function( jQuery ) {
144 equals( jQuery('body').offset().top, 1, "jQuery('#body').offset().top" );
145 equals( jQuery('body').offset().left, 1, "jQuery('#body').offset().left" );
150 function testoffset(name, fn) {
152 test(name, function() {
153 // pause execution for now
156 // load fixture in iframe
157 var iframe = loadFixture(),
158 win = iframe.contentWindow,
159 interval = setInterval( function() {
160 if ( win && win.jQuery && win.jQuery.isReady ) {
161 clearInterval( interval );
164 // call actual tests passing the correct jQuery isntance to use
165 fn.call( this, win.jQuery );
166 document.body.removeChild( iframe );
172 function loadFixture() {
173 var src = './data/offset/' + name + '.html?' + parseInt( Math.random()*1000 ),
174 iframe = jQuery('<iframe />').css({
175 width: 500, height: 500, position: 'absolute', top: -600, left: -600, visiblity: 'hidden'
176 }).appendTo('body')[0];
177 iframe.contentWindow.location = src;