};\r
\r
/**\r
- * 要素の親要素に対する位置。\r
+ * 要素の文書内の位置。引数に xnode を与えた場合、\r
* @alias Node.prototype.offset\r
* @return {object} { x: {number}, y : {number} }\r
* @example node.offset();\r
*/\r
-function X_Node_offset( /* xnodeParent */ ){\r
- var flags = this[ '_flags' ], elm;\r
+function X_Node_offset( xnode ){\r
+ var flags = this[ '_flags' ],\r
+ offset = { x : 0, y : 0 },\r
+ obj, parent, elm;\r
\r
- if( ( flags & X_NodeFlags_IN_TREE ) === 0 || flags & X_NodeFlags_STYLE_IS_DISPLAY_NONE ) return { x : 0, y : 0 };\r
- \r
- if( X_Node_body === this || X_Node_html === this ){\r
- return { x : 0, y : 0 };\r
- };\r
+ if( ( flags & X_NodeFlags_IN_TREE ) === 0 || flags & X_NodeFlags_STYLE_IS_DISPLAY_NONE ) return offset;\r
\r
+ if( X_Node_body === this || X_Node_html === this ) return offset;\r
+\r
X_Node_updateTimerID && X_Node_startUpdate();\r
- \r
+\r
elm = this[ '_rawObject' ] || X_Node__ie4getRawNode && X_Node__ie4getRawNode( this );\r
\r
- return elm ? X_Node_getPosition( elm ) : { x : 0, y : 0 };\r
+ return elm ? X_Node_getPosition( elm ) : offset;\r
};\r
\r
// エレメントの座標取得 ~スクロール要素~\r
-// http://n-yagi.0r2.net/script/2009/06/post_14.html\r
+// http://n-yagi.0r2.net/script/2009/07/post_16.html\r
\r
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\r
// エレメントの絶対座標を得たい\r
//------------------------------------------------------------------------------\r
// 座標取得\r
var X_Node_getPosition =\r
- document.documentElement && document.documentElement.getBoundingClientRect ?\r
- function( el ){\r
- var pos = el.getBoundingClientRect(),\r
- html = document.documentElement,\r
- body = document.body;\r
- return { x:(pos.left + (body.scrollLeft||html.scrollLeft) - html.clientLeft)\r
- , y:(pos.top + (body.scrollTop||html.scrollTop) - html.clientTop) };\r
- } :\r
+ !X_UA[ 'IE4' ] && document.createElement( 'div' ).getBoundingClientRect ?\r
+ (\r
+ document.compatMode === 'CSS1Compat' && !X_UA[ 'Webkit' ] ? function( el ){\r
+ var pos = el.getBoundingClientRect(),\r
+ html = document.documentElement;\r
+ return { x:(pos.left + html.scrollLeft - html.clientLeft)\r
+ , y:(pos.top + html.scrollTop - html.clientTop) };\r
+ } :\r
+ function( el ){\r
+ var pos = el.getBoundingClientRect();\r
+ return { x:(pos.left + window.pageXOffset)\r
+ , y:(pos.top + window.pageYOffset) };\r
+ }\r
+ ) :\r
X_UA[ 'Opera' ] < 10 ?\r
function( el ){\r
var ex = 0;\r